RabbitMQ RPC 多发送者一接收者

Posted

技术标签:

【中文标题】RabbitMQ RPC 多发送者一接收者【英文标题】:RabbitMQ RPC multiple senders one receiver 【发布时间】:2016-07-23 09:11:51 【问题描述】:

您好,我是 RabbitMQ 的新手。我想实现 RPC 模式,但有多个客户端和一台服务器。任何人都可以推荐一种响应方式来实现这一点。我有点担心我实现一个客户端和一个服务器的代码会引入阻塞问题,理想情况下我希望客户端能很快得到响应。

【问题讨论】:

请问您需要解决什么业务问题? 【参考方案1】:

首先要弄清楚术语:

在 RMQ 上下文中,RMQ 是一个代理(服务器),其客户端是生产者和消费者。 在 RPC 上下文中(例如 the tutorial),我们有一个 RPC 客户端和一个 RPC 服务器。因此,当我们将其“映射”到 RMQ 上下文时,我们说 RPC 客户端实际上既是 RMQ 生产者又是 RMQ 消费者(因为它发送请求并接收回复),而 RPC 服务器既是 RMQ 消费者又是 RMQ 生产者(因为它等待请求,然后发送回复)

现在,如果您按照教程(上述链接)中的相同方式实现它,您将不会遇到任何问题。您应该简单地启动更多的 RPC 服务器,以便可以并行处理更多的请求。

【讨论】:

可以回答 Alexy 的问题。业务问题是我们有一个网站需要与一个相当旧的会计软件进行通信,该软件的 API 更适合通过网络长时间运行连接的桌面应用程序。供应商不支持并暗示在我们的场景中存在线程问题。因此,我们的下一个方法是让 Web 应用程序向 RabbitMQ 发送消息,并让控制台应用程序永久连接到侦听队列的会计应用程序,如果进程不太长,则能够通知 Web 应用程序用户交易已处理/排队 所以从教程回到 cantSleep (我使用了不同的)。从性能/明智的架构方法。 RPC 客户端是否可以在每次调用的基础上为 Web 应用程序创建一个临时队列并路由回该队列。我现在不在我的电脑旁,所以我无法通过教程运行。但从外观上看,它创建了一个队列。只是有点担心一个队列可能会产生瓶颈。我已经看到了一些创建临时队列的示例,这些队列持续了事务的持续时间。这是一个更具可扩展性的方向吗?

以上是关于RabbitMQ RPC 多发送者一接收者的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ——SpringBoot集成RabbitMQ

RabbitMQ——SpringBoot集成RabbitMQ

rabbitmq学习:利用rabbitmq实现远程rpc调用

RabbitMQ远程执行任务RPC。

第二百九十一节,RabbitMQ多设备消息队列

RabbitMQ使用介绍6—RPC