当前位置: 首页 > 知识库问答 >
问题:

基于RabbitMQ的发布者/订阅者API设计

轩辕经赋
2023-03-14

我正在创建一个API来发布和使用来自RabbitMQ的消息。在我当前的设计中,发布者将发出一个POST请求。我的API会将POST请求路由到Exchange。这样,发布者在发布时就不必知道服务器地址、exchange名称等。

现在消费者部分是我不确定如何继续的地方。

开始时不会排队。当一个新的消费者想要订阅一个主题时,那么我将创建一个队列并将其绑定到交换。我需要一些问题的答案-

  1. 一旦我为使用者创建了一个队列,那么让使用者从该队列中获取消息的下一步是什么?
  2. 我使使用者从队列中请求一批消息(例如50条消息)。然后,一旦我收到来自消费者的ack,我将从队列中发送接下来的50条消息。如果我没有收到ack,我将把50条消息重新请求到队列中。就打开和关闭使用者与我的API之间的连接而言,这不是很昂贵吗?

如果有更好的方法,那么请建议

共有1个答案

阙佐
2023-03-14

总的来说,您将RMQ放在REST API后面的想法是一个好主意。你不想直接把RMQ暴露在世人面前。

具体问题:

一旦我为使用者创建了一个队列,下一步是什么让使用者从那个队列中获取消息呢?

不要为每批消息打开和关闭连接。

您的应用程序实例(“消费者”应用程序)应该有一个单独的连接。只要您需要,该连接就会一直打开--只要您需要,就可以通过对RabbitMQ的多次调用

我通常会在应用程序启动后立即打开RMQ连接,直到应用程序关闭。

 类似资料:
  • 我想用Java实现各种各样的发布者/订阅者模式,但目前已经没有主意了。 有1个发布者和N个订阅者,发布者发布对象,然后每个订阅者需要按照正确的顺序对每个对象进行一次且仅处理一次。发布者和每个订阅者在自己的线程中运行。 在我最初的实现中,每个订阅者都有自己的阻塞队列,发布者将对象放入每个订阅者的队列中。这可以正常工作,但如果任何订阅者的队列已满,发布者将被阻塞。这会导致性能下降,因为每个订阅者处理对

  • 目前,我已经开始使用ActiveMQ处理JMS主题。我已经通过JAVA代码(如下所述)创建了发布者和持久订阅者,并且在订阅者端也收到了消息。 Publisher.Java 订阅者.java 我对以下主题有一些疑问, 如何检查有多少订阅者使用 Java JMS 在主题中主动查找消息? 如何从主题中获取活动和持久订阅者列表? 我们是否可以删除主题中发布的消息? 在这些情况下帮助我。 提前致谢。

  • 本文向大家介绍JavaScript设计模式之观察者模式(发布者-订阅者模式),包括了JavaScript设计模式之观察者模式(发布者-订阅者模式)的使用技巧和注意事项,需要的朋友参考一下 观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的dom事件. 也是js和dom之间实现的一种观察者模式. 只要订阅了div的click事件. 当点

  • 是否有任何示例代码可以让一个主机发布事件,而另一个主机通过Esper框架接收事件(侦听器或订阅者)。我注意到Esper提供了不同的适配器(套接字、JMS和HTTP),但找不到相应的示例代码。谢谢

  • 我正在构建一个Akka应用程序,并希望向外部消费者公开一些参与者的FSM状态转换。(最终目标是能够将状态转换消息推送到websocket,以便可以实时查看。)

  • 我需要在发布/订阅模式下调用Kafka消费者1000次。据我所知,为了让kafka在发布/订阅模式下工作,我需要给每个消费者一个新的groupId(props . put(" group . id ",String.valueOf(Instant.now())。toEpochMilli()));).但是当我这样做的时候,如果两个消费线程同时访问消费线程,就会出现问题。这个问题应该怎么解决?