有没有办法在侦听器中获取路由键

时间:2017-05-29 17:15:17

标签: java asynchronous spring-boot rabbitmq

我有一个Spring Boot应用程序,它使用RabbitMQ进行异步调用。 在监听器(消费者)中,我想从某个地方获取路由密钥? 可能吗 ?你能帮我吗?

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以从 MessageProperties 获取它。 有一个完整文档的链接(找到 getReceivedRoutingKey 方法):https://docs.spring.io/spring-amqp/api/org/springframework/amqp/core/MessageProperties.html

还有一小段代码:

@RabbitListener(queues = "${spring.rabbitmq.template.queue}")
public void listen(Message message) {
    String receivedRoutingKey = message.getMessageProperties().getReceivedRoutingKey();
    log.info("Routing key: {}", receivedRoutingKey);
}

答案 2 :(得分:0)

以下是代码:

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

我在项目中犯了一些错误,因此我无法获得路由密钥。我找到了问题的根本原因,所以上面的代码解决了问题。