RabbitMQ单个交换机和单个队列,具有多个路由键

3
我将尝试使用BasicGet只检索与频道的Exchange/Queue/RoutingKey组合相匹配的消息。
我们Routing Key的一个示例为:
Development:STACK_1_WEBSERVER_V2:1:2.9.0.0

我遇到的问题是Routing Key被完全忽略了,所有消息都可以通过BasicGet获取,无论指定的Routing Key是什么。

我正在使用Direct交换。我认为Direct足够了,我不需要像Topic交换那样能够使用通配符路由键。

Direct Exchange和Routing Key方案是否应该与BasicGet一起工作?

谢谢

1个回答

5

虽然您的getter正在从具有多个路由键消息的队列中拉取,但直接交换和路由键就足够了。 您需要为每个需要自己一组消息的getter设置单独的队列。

这不是AMQP中basic.get和basic.consume之间的差异。

在您从队列中提取消息的时间点上,交换类型和路由键并不重要,消息已经被路由到队列中。


谢谢您的回答。那么路由键不用于在单个键内路由消息,是吗?那么它们有什么作用呢? - Pat Long - Munkii Yebee
2
路由键用于告诉RabbitMQ如何处理发布到交换机的消息。服务器将使用路由键与队列的绑定键进行匹配,并根据交换机的类型决定如何处理消息。 - Philip Cristiano
“根据交换类型决定如何处理消息”是什么意思?听起来路由键是在决定绑定到该路由键的队列上返回哪条消息时使用的数据的一部分。 - Pat Long - Munkii Yebee
1
我们对路由键的作用存在明显的误解。所以,您能否确认它们只是作为RabbitMq确定在发布消息时将消息添加到哪个队列的一种方式,并且取消排队的消息只是从一个完全不关心路由键的队列中读取。谢谢。 - Pat Long - Munkii Yebee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接