首页 > 解决方案 > 使用 RabbitMQ 进行 RPC 风格的通信:模板 convertSendAndReceive 与推送/订阅风格

问题描述

我正在使用 RabbitMQ 实现 RPC 样式的通信,其想法是创建异步管道架构。我正在使用 Java Spring 和 AMQP。

我将执行一个 RPC 式通信链——与一个服务器的通信将触发另一个,另一个将触发另一个,直到最终到达链的末端并且启动链的服务器接收最终答案。我找到了两种似乎适合我需要的技术:

  1. asyncRabbitTemplate's convertSendAndReceive(...): 使用这种方法推送,一旦消费者收到,触发另一个convertSendAndReceive(...)等等......一个链,直到最终结果最终到达启动整个过程的服务器。

  2. 使用推送/订阅模式,其中一个生产者将使用 推送convertAndSend(...),消费者将通过监听@RabbitListen并推送到正在监听的另一个,依此类推;在此设置中,初始convertAndSend(...)调用的服务器将收到最终响应。

我不确定这些方法有什么区别?什么时候选择其中一个?有性能权衡吗?一个比另一个需要更多的编程工作吗?

标签: javaspringasynchronousrabbitmqamqp

解决方案


这应该是对@theMayer 回答的评论。但是,我想用图像详细说明 RPC 的细节。@theMayer 如果您愿意,可以随意嵌入此图像,然后我会删除此答案。

RPC 调用通常如下运行: RPC 实现


推荐阅读