【发布时间】:2016-12-10 00:27:47
【问题描述】:
TL;DR - 通过 REST API 向消费者公开 RabbitMQ 的最佳方式是什么?
我正在创建一个 API 来发布和使用来自 RabbitMQ 的消息。在我目前的设计中,发布者将发出一个 POST 请求。我的 API 会将 POST 请求路由到交易所。这样,发布者在发布时不必知道服务器地址、交换名称等。
现在消费者部分是我不知道如何进行的地方。
一开始不会有排队。当一个新的消费者想要订阅一个 TOPIC 时,我将创建一个队列并将其绑定到交换。我需要帮助解答几个问题 -
- 为消费者创建队列后,让消费者从该队列获取消息的下一步是什么?
- 我让消费者从队列中请求一批消息(比如 50 条消息)。然后,一旦我收到来自消费者的确认,我将从队列中发送接下来的 50 条消息。如果我没有收到确认,我会将 50 条消息重新排入队列。就消费者和我的 API 之间的打开和关闭连接而言,这不是很昂贵吗?
如果有更好的方法,请提出建议
【问题讨论】:
-
呃,在不知道真正需要的情况下很难回答。请添加您的目标语言,以便您获得更好的推荐。简而言之:1)要消费你需要开始消费,在 AMQP 协议级别它是一个
basic.consume方法,在客户端库中,无论语言它都应该以类似的方式调用。 2)您基本上不会从队列向消费者发送任何消息,这是代理(RabbitMQ)的责任。您将消息发送到交换器,将队列绑定到交换器并从队列中消费。但是,如果它符合您的需求,您可以在消费者和发送者之间进行交互。应该衡量实际成本。
标签: rabbitmq api-design