TL; DR - 什么是通过REST API向使用者公开RabbitMQ的最佳方式?
我正在创建一个API来发布和使用来自RabbitMQ的消息。在我目前的设计中,发布者将发出POST请求。我的API会将POST请求路由到交换机。通过这种方式,发布者在发布时不必知道服务器地址,交换名称等。
现在消费者部分是我不知道如何继续的地方。
一开始就没有队列。当新的消费者想要订阅TOPIC时,我将创建一个队列并将其绑定到交换机。我需要帮助解答几个问题的答案 -
如果有更好的方法,请建议
答案 0 :(得分:0)
通常,您将RMQ置于REST API之后的想法是一个很好的想法。您不希望直接向世界公开RMQ。
针对具体问题:
为消费者创建队列后,让消费者从该队列中获取消息的下一步是什么?
你读过这些教程吗?对于您正在使用的语言,我会从那里开始:http://www.rabbitmq.com/getstarted.html
在打开和关闭消费者与我的API之间的连接方面,这不是很昂贵吗?
不要为每批邮件打开和关闭连接。
您的应用程序实例(“消费者”应用程序)应该只有一个连接。只要您需要,该连接就会保持打开状态 - 可以根据需要调用RabbitMQ。
我通常会在应用启动后立即打开我的RMQ连接,并将其保持打开状态,直到该应用关闭。
在消费者应用程序中,使用该单个连接,您将通过该连接创建多个通道。通道是实际工作的地方。
根据您的语言,每个线程将有一个通道;每个队列消耗一个通道;等
与连接不同,您可以非常快速地创建和销毁频道。
更具体地说,您可以通过在消费者处设置消费者预取限制,然后在处理消息后确认消息来处理批处理。