Spring AMQP使用noLocal使用者发送和接收临时队列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring AMQP使用noLocal使用者发送和接收临时队列相关的知识,希望对你有一定的参考价值。

使用临时队列发送和接收时,会创建一个使用noLocal属性设置为true的消费者(请参阅RabbitTemplate#doSendAndReceiveWithTemporary method line 1297 of version 1.7.4.RELEASE)。

根据javadocs for the basicConsume method,当此属性设置为true时,“服务器不应向此消费者传递此消息连接上发布的消息”。

现在,据我所知,这个消费者正在被设置为实际接收回复消息。如果我是正确的,那么由于noLocal属性设置为true,不应该收到回复吗?

当使用RabbitMQ作为AMQP代理时,收到回复消息就好了。但是,使用Apache Qpid时,不会收到回复。实际上,只有当noLocal属性设置为false时才会收到它。

答案

让服务器端在与客户端相同的应用程序中运行有点不寻常。这是非本地应该影响这种情况的唯一方法,因为通常情况下,客户端不会发布回复。

我们不声称与QPID(当然不是AMQP 1.0)的兼容性,但我看到QPID声称支持AMQP 0.9.x所以随时打开一个JIRA Issue,我们将在时间允许的情况下查看。

以上是关于Spring AMQP使用noLocal使用者发送和接收临时队列的主要内容,如果未能解决你的问题,请参考以下文章

Spring使用Spring和AMQP发送接收消息(上)

我怎么知道我的消息是用 spring amqp 成功发送的?

Axon Framework 扩展 - Spring AMQP

Spring AMQP 发送消息到 RabbitMQ 收到 x-queue-type 错误

Spring AMQP项目

Spring AMQP - 发送和接收消息