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

我的任何使用者都可以从队列中获取消息吗?

宗政财
2023-03-14

我正在开发一个应用程序。我正在使用Activemq。有没有什么方法可以做到一个生产者总是向一个经纪人发送消息,但在另一边有3consumers.Each消费者监听经纪人,可以从queue.Is获取任何消息?

我正在使用 activemq 将我的应用程序日志写入数据库。如您所知,将日志写入数据库是一个耗时的过程。这就是为什么消费者比生产者越来越慢。例如。我发送100.000条消息(大对象)。制作者在20分钟内完成发送消息。但是,当生产者完成时,消费者已经完成了4.000条消息处理。

共有1个答案

曹鹏海
2023-03-14

是的,你所描述的是可能的。事实上,您可以让任意数量的消费者监听一个队列。消息以循环方式在消费者之间分发。

您应该注意的是,ActiveMQ在发送小消息时比发送大消息时表现得更好。如果您需要发送非常大的有效负载(例如100mb),则最好将消息保存到生产者和消费者都可以访问的位置(例如网络文件系统),然后发送消息的位置。然后,消费者可以使用它手动读取消息。这样,您可以通过消息代理获得相对少量的流量。

 类似资料:
  • 问题内容: 我们正在使用amqplib来发布/使用消息。我希望能够读取队列中的消息数(理想情况下是已确认和未确认)。这将使我能够向管理员用户显示良好的状态图,并检测某个组件是否无法满足负载需求。 我在amqplib文档中找不到有关读取队列状态的任何信息。 有人可以指出我正确的方向吗? 问题答案: 使用皮卡: 使用PyRabbit: 使用HTTP 句法: 例: 注意:默认虚拟主机是需要转义为 使用C

  • 我已经使用手动触发器创建了一个azure服务总线和一个新的逻辑应用程序。然后,我将“从队列获取消息(peek lock)”操作添加到应用程序中,并将最大消息数设置为“20”。 然后我在我的队列中手动创建5条新消息,然后触发我的新逻辑应用程序。然后,当我查看应用程序的执行情况时,我只看到检索到一条消息(并检查,有4条消息仍在我的队列中)。 似乎“20”的计数没有得到尊重。我还检查了我的服务总线队列的

  • 我们为分布式进程之间的消息传输实现了ZMQ PUB/SUB机制。但是由于订阅者的流转时长,消息的处理会有一定的延迟(有时由于排队消息的数量,延迟以小时为单位)。为了克服这种延迟,我计划根据进入发布者队列的未决消息的数量来扩展订阅者进程。 是否有任何机制来获取 ZMQ 发布者队列的计数/长度? 目前,我正在考虑使用发布服务器 RAM 利用率阈值来纵向扩展/缩减订阅服务器进程。

  • RabbitMQ的大部分文档似乎都集中在循环(round-robin)上,即单个消息由单个消费者使用。我有一个需求,其中希望从一个队列接收到多个订阅的消费者的相同消息。 下面是我的示例消费者代码。这里有两个侦听器在侦听同一个队列,但是只有一个使用者接收到消息。如何配置它,以便将相同的消息传递给两个消费者?(Consumer1和Consumer2)。任何帮助都将得到高度赞赏。

  • 我有一个java客户机,它在队列中发送jms消息(“队列请求”)。该消息包含一个int属性(“id”),其中包含唯一的客户端id号。消息正在处理中,然后进入另一个队列(“队列响应”)。如何让客户机等到具有其id的消息在队列中,然后读取它。我曾尝试使用侦听器并实现onMessage,但当收到消息时,我如何停止侦听?

  • 我们计划编写一个Kafka消费者(java),它读取Kafka队列以执行消息中的操作。