绑定队列的问题
String queue = channel.queueDeclare().getQueue();
//交换机和队列绑定
channel.queueBind(queue, EXCHANGE_NAME, "info");
channel.queueBind(queue, EXCHANGE_NAME, "warning");
channel.queueBind(queue, EXCHANGE_NAME, "error");
1.queue是接收者生成的队列名,绑定的时候根据这个绑定不行吗?
2.后面还跟了一个路由键,这个说是区分队列的,那前面的都是同一个队列,路由键不同,这是咋区分的?
3.这应该是三个队列还一个?如果是三个的话为啥只声明了一个queue
17
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小尤
2021-10-11 11:37:39
同学你好,1、是可以的,queueBind()方法的作用是:将队列与交换机进行绑定。所以是可以通过队列名进行绑定的。
2、具体如何区分是根据routingKey进行区分。如下所示:
如果routingKey是”error”发送消息到Exchange(交换器),则消息会路由到Queue1和Queue2。如果我们以routingKey为”info”、”warning”、”error”来发送消息,则消息只会路由到Queue2。如果我们以其他routingKey发送消息,则消息不会路由到这两个Queue中。3、是一个队列,这里简单理解,就是队列里面的消息会被多个消费者同时接收到,消费者接收到的信息一致。而当前的ReciveLogsDirect1就是一个消费者,而这里的queue就是一个队列,将队列与交换机进行绑定,则队列中的消息会被消费者依次接收到的。
祝学习愉快!
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星