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 }