From 2a9928c209599b30a7813bab68ebbafa46d18667 Mon Sep 17 00:00:00 2001 From: falcon <9504402@qq.com> Date: Fri, 10 Mar 2023 15:51:15 +0800 Subject: [PATCH] =?UTF-8?q?Rabbit=E4=BA=A4=E6=8D=A2=E6=9C=BA=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=A8=A1=E5=BC=8F=E3=80=82comfirm=E5=92=8C=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E6=A8=A1=E5=BC=8F=E6=B5=8B=E8=AF=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RabbitMqTest/OriginalTest.cs | 53 ++++++++++++++++++++++++++++++++---- RabbitMqTest/RabbitmqBase.cs | 10 +++++++ 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/RabbitMqTest/OriginalTest.cs b/RabbitMqTest/OriginalTest.cs index a40a948..3c6fc98 100644 --- a/RabbitMqTest/OriginalTest.cs +++ b/RabbitMqTest/OriginalTest.cs @@ -20,7 +20,7 @@ namespace RabbitMqTest using var channel = GetChannel(); channel.QueueDeclare("hello",false,false,false,null); var consumer = new EventingBasicConsumer(channel); - consumer.Received+=(model,args) => { + consumer.Received += (model,args) => { var msg = Encoding.UTF8.GetString(args.Body.ToArray()); Console.WriteLine($"Received message 1 {msg}"); //Assert.IsTrue(msg==smsg1 || msg==smsg2); @@ -33,7 +33,7 @@ namespace RabbitMqTest //消费者2 using var channel2 = GetChannel(); var consumer2 = new EventingBasicConsumer(channel2); - consumer2.Received+=(model,args) => { + consumer2.Received += (model,args) => { var msg = Encoding.UTF8.GetString(args.Body.ToArray()); Console.WriteLine($"Received message 2 {msg}"); //Assert.IsTrue(msg==smsg1||msg==smsg2); @@ -71,7 +71,7 @@ namespace RabbitMqTest Console.WriteLine($"创建的临时队列名1:{queueName1}"); channel1.QueueBind(queueName1,exchangeName,"",null); var consumer1 = new EventingBasicConsumer(channel1); - consumer1.Received+=(m,a) => { + consumer1.Received += (m,a) => { var msgs = Encoding.UTF8.GetString(a.Body.ToArray()); Console.WriteLine($"Received message 1 {msgs}"); Assert.AreEqual(msgs,smsg); @@ -87,7 +87,7 @@ namespace RabbitMqTest Console.WriteLine($"创建的临时队列名2:{queueName2}"); channel2.QueueBind(queueName2,exchangeName,"",null); var consumer2 = new EventingBasicConsumer(channel2); - consumer2.Received+=(m,a) => { + consumer2.Received += (m,a) => { var msgs = Encoding.UTF8.GetString(a.Body.ToArray()); Console.WriteLine($"Received message 2 {msgs}"); Assert.AreEqual(msgs,smsg); @@ -114,7 +114,7 @@ namespace RabbitMqTest //消费者1 using var channel1 = GetChannel(); var consumer1 = new EventingBasicConsumer(channel1); - consumer1.Received+=(m,a) => { + consumer1.Received += (m,a) => { var msgs = Encoding.UTF8.GetString(a.Body.ToArray()); Console.WriteLine($"Received message 1 {msgs}"); Assert.AreEqual(msgs,smsg); @@ -129,7 +129,7 @@ namespace RabbitMqTest //消费者2 using var channel2 = GetChannel(); var consumer2 = new EventingBasicConsumer(channel2); - consumer2.Received+=(m,a) => { + consumer2.Received += (m,a) => { var msgs = Encoding.UTF8.GetString(a.Body.ToArray()); Console.WriteLine($"Received message 2 {msgs}"); Assert.AreEqual(msgs,smsg); @@ -138,5 +138,46 @@ namespace RabbitMqTest } + /// + /// 发送到exchange后,exchange需要确认.Confirm模式 + /// + [TestMethod("exchangeConfirm")] + public void ExchangeConfirm() { + var exchangeName = "tempExchange"; + + var channel = GetChannel(); + channel.ExchangeDeclare(exchangeName,ExchangeType.Fanout,false,true,null); + channel.ConfirmSelect(); + channel.BasicPublish(exchangeName,"",null,RandomMsgBytes()); + if(channel.WaitForConfirms()) { + Console.WriteLine("交换机确认成功!"); + } + else { + Console.WriteLine("交换机确认失败!"); + Assert.Fail(); + } + } + + /// + /// 发送到exchange后,exchange需要确认.事务模式 + /// + [TestMethod("exchangeTx")] + public void ExchangeConfirm2() { + var exchangeName = "tempExchange"; + + using var channel = GetChannel(); + channel.ExchangeDeclare(exchangeName,ExchangeType.Fanout,false,true,null); + try { + channel.TxSelect(); + channel.BasicPublish(exchangeName,"",null,RandomMsgBytes()); + channel.TxCommit(); + Console.WriteLine("交换机确认成功!"); + } + catch(Exception ex) { + Console.WriteLine("交换机确认失败!"); + Assert.Fail(); + } + } } + } diff --git a/RabbitMqTest/RabbitmqBase.cs b/RabbitMqTest/RabbitmqBase.cs index 6a0a157..1f300bd 100644 --- a/RabbitMqTest/RabbitmqBase.cs +++ b/RabbitMqTest/RabbitmqBase.cs @@ -34,6 +34,16 @@ namespace RabbitMqTest return sb.ToString(); } + /// + /// 生成随机消息字节数组 + /// + /// + /// + protected virtual Byte[] RandomMsgBytes(int len = 10) { + var str = RandomString(len); + return Encoding.UTF8.GetBytes(str); + } + /// /// 创建队列 ///