通过 Spring 在 RabbitMQ 扇出交换上发送和接收
Send and receive on RabbitMQ fanout exchange via Spring
我正在使用 RabbitMQ,我对使用扇出交换和 convertSendAndReceive
(或 sendAndReceive
)RabbitTemplate
class.[=17= 的方法感到困惑]
例如,我有 2 个消费者用于持久队列 QUEUE-01 和 QUEUE-02,它们绑定到持久扇出交换 FANOUT-01。和 1 个发布者到 FANOUT-01。我了解使用 convertAndSend
(或 send
)方法发布消息时会发生什么,消息将被复制到每个队列并由每个消费者处理。但是我不确定如果我调用 sendAndReceive
方法会发生什么?我将从哪个消费者那里得到回复?有什么具体的行为吗?我找不到任何关于此的文档。
RabbitTemplate
中的方法 sendAndReceive
用于您想要使用 RPC 样式消息传递的情况。有一个很好的教程here。
sendAndReceive()
不适合 fanout
消息传递;不确定哪个回复会获胜(通常是第一个)。如果你想处理多个回复并聚合它们,你将需要使用离散的 send
和 receive
调用(或回复的侦听器容器)并自己进行聚合。
考虑在这种情况下使用 Spring Integration。它具有用于聚合消息的内置组件。
我正在使用 RabbitMQ,我对使用扇出交换和 convertSendAndReceive
(或 sendAndReceive
)RabbitTemplate
class.[=17= 的方法感到困惑]
例如,我有 2 个消费者用于持久队列 QUEUE-01 和 QUEUE-02,它们绑定到持久扇出交换 FANOUT-01。和 1 个发布者到 FANOUT-01。我了解使用 convertAndSend
(或 send
)方法发布消息时会发生什么,消息将被复制到每个队列并由每个消费者处理。但是我不确定如果我调用 sendAndReceive
方法会发生什么?我将从哪个消费者那里得到回复?有什么具体的行为吗?我找不到任何关于此的文档。
RabbitTemplate
中的方法 sendAndReceive
用于您想要使用 RPC 样式消息传递的情况。有一个很好的教程here。
sendAndReceive()
不适合 fanout
消息传递;不确定哪个回复会获胜(通常是第一个)。如果你想处理多个回复并聚合它们,你将需要使用离散的 send
和 receive
调用(或回复的侦听器容器)并自己进行聚合。
考虑在这种情况下使用 Spring Integration。它具有用于聚合消息的内置组件。