抽一根烟的时间学会.NET Core 操作RabbitMQ (3)

抽一根烟的时间学会.NET Core 操作RabbitMQ

routing模式对应的交换机类型是direct,和发布订阅模式的区别在于:routing模式下,可以指定一个routingkey,用于区分消息
生产者

var channel = conn.CreateModel(); //定义交换机 channel.ExchangeDeclare(TESTEXCHANGE, ExchangeType.Direct, true, false); //绑定队列到交换机 Console.WriteLine("输入生产内容:"); var input = Console.ReadLine(); channel.BasicPublish(TESTEXCHANGE, "INFO", null, Encoding.Default.GetBytes("hello rabbitmq:" + input));

消费者 A

//定义队列 channel.QueueDeclare(QUEUENAME, true, false, false); //定义交换机 channel.ExchangeDeclare(TESTEXCHANGE, ExchangeType.Direct, true, false); //绑定队列到交换机 channel.QueueBind(QUEUENAME, TESTEXCHANGE, "INFO");

消费者 B

//定义队列 channel.QueueDeclare(QUEUENAME, true, false, false); //定义交换机 channel.ExchangeDeclare(TESTEXCHANGE, ExchangeType.Direct, true, false); //绑定队列到交换机 channel.QueueBind(QUEUENAME, TESTEXCHANGE, "ERROR");

绑定成功后,发送消息,消费者A可以收到消息,消费者B无法收到消息。

如果遇到指定routingKey生产一条消息,结果 AB消费者都收到的情况。建议在RabbitMQ后台的交换机下看一下绑定的Queue是否重复绑定了多个routingKey.

抽一根烟的时间学会.NET Core 操作RabbitMQ

topic通配符模式

抽一根烟的时间学会.NET Core 操作RabbitMQ

在通配符模式下,RabbitMQ使用模糊匹配来决定把消息推送给哪个生产者。通配符有两个符号来匹配routingKey

*匹配一个字符 如:*.qq.com 可匹配 1.qq.com

#匹配一个或者多个字符。 如:*.qq.com 可匹配 1.qq.com或者1111.qq.com

其他的操作基本和routing模式一样。

header模式

header模式是把routingkey放到header中.取消掉了routingKey。并使用一个字典传递 K、V的方式来匹配。
比如同时要给用户发送邮件和短信,可直接通过header的键值对来匹配绑定的值,把消息传递给发短信和邮件的生产者.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssgzf.html