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); + } + /// /// 创建队列 ///