【问题标题】:Get response of message queue inside rails controller获取 Rails 控制器内消息队列的响应
【发布时间】:2017-02-04 11:00:29
【问题描述】:

我有一个 Rails 控制器(例如在应用程序 A 中),其响应取决于来自另一个应用程序(例如应用程序 B)的数据。

我正在使用 RabbitMq 进行应用程序间通信。

在队列工作者从应用程序 B 获得响应之前,我无法呈现来自控制器的响应。因此,目前当我在应用程序 A 上收到 HTTP 调用时,我通过 RabbitMq 队列发布到应用程序 B 以获取所需的数据。我正在监听由“sneakers”gem 创建的队列上的应用程序 B 的响应。我想从应用程序 A 的控制器内的“运动鞋”队列中接收获取的数据。

所以问题是我怎样才能等待 RabbitMq,控制器内的队列响应? 而且,如果我能够等待控制器内部的响应,我将如何确定哪个队列响应是针对哪个 HTTP 调用的。

【问题讨论】:

    标签: ruby-on-rails architecture rabbitmq


    【解决方案1】:

    要解决第二个问题,您可以将随机生成的字符串与您发送给应用程序 B 的请求一起发送。应用程序 B 在响应时也会发送与请求相同的字符串。所以控制器 A 会知道响应是针对哪个请求的。

    现在来到第一个问题,我认为 rabbitmq 不是做这种事情的正确工具。即使您可以等待消息,这也将是一件非常缓慢的事情。与之相比,更好的方法是将应用程序 B 公开为 API。它将使应用程序的速度提高许多倍。

    如果 API 不是一个选项,您可以查看this link,了解如何创建消费者。

    【讨论】:

      猜你喜欢
      • 2014-06-29
      • 1970-01-01
      • 2017-09-14
      • 2018-10-12
      • 2013-12-16
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2013-05-17
      相关资源
      最近更新 更多