.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 }