Java 通过Spring在RabbitMQ扇出交换上发送和接收

Java 通过Spring在RabbitMQ扇出交换上发送和接收,java,rabbitmq,spring-rabbit,Java,Rabbitmq,Spring Rabbit,我正在使用RabbitMQ,我对使用扇出交换和RabbitTemplate类的convertSendAndReceive(或sendAndReceive)方法感到困惑 例如,我有两个持久队列QUEUE-01和QUEUE-02的使用者,它们绑定到持久扇出交换扇出-01。和1个发布者到FANOUT-01。我了解当使用convertAndSend(或send)方法发布消息时会发生什么,消息将被复制到每个队列,并由每个消费者进行处理。但我不确定如果调用send和receive方法会发生什么?哪位消费者会

我正在使用RabbitMQ,我对使用扇出交换和
RabbitTemplate
类的
convertSendAndReceive
(或
sendAndReceive
)方法感到困惑


例如,我有两个持久队列QUEUE-01和QUEUE-02的使用者,它们绑定到持久扇出交换扇出-01。和1个发布者到FANOUT-01。我了解当使用
convertAndSend
(或
send
)方法发布消息时会发生什么,消息将被复制到每个队列,并由每个消费者进行处理。但我不确定如果调用
send和receive
方法会发生什么?哪位消费者会给我回复?有什么特别的行为吗?我找不到关于此的任何文档。

rabbitmplate中的方法
send和receive
用于希望使用RPC样式的消息传递时。这里有一个很好的教程。

sendanreceive()
不适合
fanout
消息传递;至于哪一个答复(通常是第一个答复)将获胜,这是不确定的。如果要处理多个回复并聚合它们,则需要使用离散的
send
receive
调用(或回复的侦听器容器),然后自己进行聚合


考虑在这种情况下使用。它具有用于聚合消息的内置组件。

感谢您的回复!这正是我认为会发生的事情,但没有找到任何证据。您能提供一些关于使用离散
发送
接收
呼叫的更多信息吗?也许有一些例子?
receive()
不会阻塞(尽管在即将发布的1.5版本中有这样做的选项)。因此,使用异步使用者进行回复可能是最简单的。我不知道您的用例有任何具体的例子,但它应该很容易设置;看见