Rabbitmq-direct演示
Posted zhangblearn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rabbitmq-direct演示相关的知识,希望对你有一定的参考价值。
在上一节中我们创建了一个日志系统。实现将日志消息广播给所有的cusumer。
在这片教程中,我们将为日志系统添加一个功能:仅仅订阅一部分消息。比如:我们可以直接将关键的错误类型日志消息保存到日志文件中,还可以同时将所有的日志消息打印到控制台。
绑定(binding)
在之前的例子中,我们已经创建了绑定:
channel.queueBind(queueName,EXCHANGE_NAME,"");
一个绑定是建立在一个队列和一个路由器之间的关系,可以解读为:该队列对这个路由器中的消息感兴趣。
绑定可以设置另外的参数:路由键(routing key)。为了避免和producer中的void basicPublish(String exchange, String routingKey, BasicProperties props, byte[] body)中的routingKey混淆,我们将这里的key称为绑定键binding key,下面的代码展示了如何使用绑定键来创建一个绑定关系:
channel.queueBind(queueName,EXCHANGE_NAME,"black");
绑定键的含义取决于路由器的类型,我们之前用的fanout类型交换机会忽略该值。
直接交换(Direct Exchange)
我们之前的日志系统会将所有消息广播给所有消费者。现在我们想根据日志的严重程度来过滤日志。比如,我们想要一个程序来将error日志写到磁盘文件中,而不要将warning或info日志写到磁盘中,以免浪费磁盘空间。
我们之前使用的fanout路由器缺少灵活性,它只是没头脑地广播消息。所以,我们用direct路由器来替换它。direct路由器背后的路由算法很简单:只有当消息的路由键routing key与队列的绑定键binding key完全匹配时,该消息才会进入该队列。
直接交换机器x与两个队列绑定。第一个队列以绑定键orange来绑定,第二个队列以两个绑定键black和green和交换机绑定。 按照这种设置,路由键为orange的消息以发布给交换机后,将会被路由到队列Q1,路由键为black或者green的消息将会路由到队列Q2。
多重绑定(Multiple bindings)
多个队列以相同的绑定键binding key绑定到同一个Exchange上,是完全可以的。按照这种方式设置的话,直接路由器就会像fanout路由器一样,将消息广播给所有符合路由规则的队列。一个路由键为black的消息将会发布到队列Q1和Q2。
以上是关于Rabbitmq-direct演示的主要内容,如果未能解决你的问题,请参考以下文章