我有一个Spring Boot应用程序,它使用RabbitMQ进行异步调用。 在监听器(消费者)中,我想从某个地方获取路由密钥? 可能吗 ?你能帮我吗?
感谢。
答案 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();
我在项目中犯了一些错误,因此我无法获得路由密钥。我找到了问题的根本原因,所以上面的代码解决了问题。