2017-05-29 51 views
1

我有一个使用RabbitMQ进行异步调用的Spring Boot应用程序。 在侦听器(消费者)中,我想从某处获取路由密钥? 这可能吗?你可以帮我吗 ?有没有什么办法让聆听器中的路由密钥

谢谢。

+0

这里是有用的教程为您:https://www.rabbitmq.com/tutorials/tutorial-three-java.html –

回答

0

首先你应该认识到消费者没有路由密钥。消费者只需从队列中获取消息。消息来自一个或多个交易所。路由密钥是交换和队列之间的关系属性,而不是队列和消费者之间的关系。

当通过路由密钥attention交换的队列绑定到直接交换时,会将每个带有交付标记attention的消息放入该队列。队列可能有多个路由键的边界。

因此,当您在消费者的上下文中讨论路由密钥时,您确实是指消息的传递标签。

请参阅queue.bindbasic.delivery

不确定有一种直接的方式可以获取有关AMPQ中队列绑定的信息。

+0

这是一个误导性的答案。有一种方法可以获取发布期间使用的原始路由密钥。 – theMayer

0

下面是代码:

message.getMessageProperties().getHeader().getReceivedRoutingKey(); 

我已经在我的项目的一些错误,因此我没能达到路由的关键。我找到了我的问题的根本原因,所以上面的代码解决了问题。

0

最初用于发布消息的路由密钥是AMQP 0-9-1规范中事件参数的一部分。

没有你正在使用的代码和RabbitMQ客户端库的具体示例,这是一般的答案。在您特定的RabbitMQ实现中,如果您可以找到访问交付事件参数的方法,那么它应该包含路由密钥。如果没有,我建议选择另一个更符合规范的客户端库。

相关问题