打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
rabbitmq Exchange Queue RoutingKey关系说明

String queue = channel.queueDeclare("test.queue").getQueue();

Rabbitmq Server 会有以下操作:

  • 定义了一个queue,名称为test.queue

  • queue的名称(test.queue)作为routingKey,将当前这个queue binding到一个默认的exchange(名称为空,服务器自动创建的)上


如果我们 binding的话

channel.queueBind("test.queue", "test.exchange", "test.routingkey");

上边和默认的Exchange进行的binding还是会存在的

  channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
//  RabbitMQ默认有一个exchange,叫default exchange,它用一个空字符串表示,它是direct exchange类型
//  ,任何发往这个exchange的消息都会被路由到routing key的名字对应的队列上,如果没有对应的队列,则消息会被丢弃
//  。这就是为什么代码中channel执行basicPulish方法时,第二个参数本应该为routing key,却被写上了QUEUE_NAME。


经过同事lucas多次测试发现,以前认为RoutingKey是唯一的或由Exchange和RoutingKey决定一条唯一的由Exchange到Queue的线路是不正确的
测试结果如下:

Exchange Name

Queue Name

Routing Key

 

test.queue     

test.queue

 

test.queue2    

test.queue2

test.exchange  

test.queue     

test.routingkey

test.exchange  

test.queue2    

test.routingkey

test.exchange  

test.queue     

test.routingkey2

test.exchange1

test.queue     

test.routingkey

由结果可以看出,由ExchangeQueueRoutingKey三个才能决定一个从Exchange到Queue的唯一的线路。

画张图,不是很准确

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
RabbitMQ基础概念详细介绍
RabbitMQ的应用场景以及基本原理介绍
RabbitMQ tutorial - 路由Routing
消息队列基础 ?RabbitMQ与AMQP协议详解——超大规模高可用OpenStack核心技术深入解析系列(二)
RabbitMQ消息队列(六):使用主题进行消息分发
.Net下RabbitMQ的使用(5) -- 路由机制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服