我有一个rails控制器(比如在应用程序A中),它的响应取决于另一个应用程序(比如应用程序B)的数据。
我正在使用RabbitMq进行应用程序间通信。
我无法从控制器呈现响应,直到队列工作者从应用程序B获得响应为止。因此,当我在应用程序A上获得HTTP调用时,我通过RabbitMq队列发布到应用程序B以获取所需的数据。我正在聆听应用程序B对由'运动鞋创建的队列的响应。宝石。我希望从“运动鞋”中获取这些获取的数据。应用程序A的控制器内的队列。
所以问题是如何在控制器内等待RabbitMq,队列响应? 而且如果我能够在控制器内部等待响应,我将如何确定哪个队列响应适用于哪个HTTP调用。
答案 0 :(得分:0)
要解决第二个问题,您可以将随机生成的字符串与您发送给应用程序B的请求一起发送。应用程序B在响应时也会发送与请求相同的字符串。因此,控制器A将知道响应的请求。
现在回答第一个问题,我认为rabbitmq不是做这种事情的正确工具。即使你可以等待这个消息,这将是一个非常缓慢的事情。与之相比,更好的方法是将应用程序B公开为API。它会多次提高应用程序的速度。
如果API不是一个选项,您可以查看this link如何创建消费者。