.net core 下使用 RabbitMQ 事务(八)

 

 

 1    public void TxProducer()
 2         {
 3             string queueName = "ORIGN_QUEUE";
 4             using(var connection = RabbitMQHelper.GetConnection("192.168.3.200", 5671))
 5             {
 6                 using(var channel = connection.CreateModel())
 7                 {
 8                     // 声明队列
 9                     channel.QueueDeclare(queueName, false, false, false, null);
10                     try
11                     {
12                         // 开启事务
13                         channel.TxSelect();
14                         // 发送信息
15                         channel.BasicPublish("", queueName,false, null,Encoding.UTF8.GetBytes("这个是事务消息1"));
16                         // 提交事务
17                         channel.TxCommit();
18                         
19                         channel.BasicPublish("", queueName, false, null, Encoding.UTF8.GetBytes("这个是事务消息2"));
20                         // 模拟异常
21                         int i = 1;
22                         int x = i / 0;
23                         channel.TxCommit();
24                         Console.WriteLine("消息发送成功");
25                     }
26                     catch (Exception)
27                     {
28                         if(channel.IsOpen)
29                         {
30                             // 回滚事务
31                             channel.TxRollback();
32                             Console.WriteLine("消息已经回滚");
33                         }
34                         throw;
35                     }
36                 }
37             }
38         }

 

posted on 2023-02-01 01:15  是水饺不是水饺  阅读(15)  评论(0编辑  收藏  举报

导航