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

Send and receive on RabbitMQ fanout exchange via Spring

我正在使用 RabbitMQ,我对使用扇出交换和 convertSendAndReceive(或 sendAndReceiveRabbitTemplateclass.[=17= 的方法感到困惑]

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

RabbitTemplate 中的方法 sendAndReceive 用于您想要使用 RPC 样式消息传递的情况。有一个很好的教程here

sendAndReceive() 不适合 fanout 消息传递;不确定哪个回复会获胜(通常是第一个)。如果你想处理多个回复并聚合它们,你将需要使用离散的 sendreceive 调用(或回复的侦听器容器)并自己进行聚合。

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