0

我对 Rabbitmq 很陌生,我正在开发一个系统,中央路由器可以接收来自客户端的消息,将其路由到目标,并将响应发送到 resquestor 客户端。

基本上,有 3 个模块,每个模块都可以发送针对另一个模块的消息。我希望消息具有以下流程:

  • module1 向路由器发送消息
  • 路由器将消息发送到模块 3(=模块 1 的目标)
  • module3 处理消息并向路由器发送响应
  • 路由器将响应转发给模块1(请求者)

RabbitMQ 似乎是一个很好的候选者,但我不确定实现它的最佳方法是什么。REQ/REP 方法会更合适吗?

4

1 回答 1

1

听起来像是 RPC 的经典案例

此链接详细解释了(使用 python)RabbitMQ 中的 RPC 是如何工作的。RPC 客户端RPC 服务器

但基本上,从上面的示例中会发生什么:

(来自 RPC 客户端)

Module1 将连接到 RabbitMQ 代理 (14/17),并声明一个独占队列 (24),然后它将创建消息的基本属性并设置 reply_to (26)(这是一个队列名称),然后将消息发布到交易所 (28)

(来自 RPC 服务器)

模块 3,将订阅来自模块 1 的消息将最终进入的队列,然后在收到消息 (31) 时从该队列开始消费 (40),它将处理它,然后重新发布结果,将路由键设置为 reply_to (38) 那么你的消费者 (Module1) 将需要从中消费(参见 rpc 消费者第 42 行)

于 2012-08-03T22:11:16.293 回答