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

多台计算机正在侦听同一activemq队列

巩镜
2023-03-14


我配置了两台机器,每台机器都有10个使用者,它们侦听在第三台机器上运行的相同activemq队列。但只有一台机器的使用者正在读取队列中的消息,而另一台机器则处于空闲状态

我希望activemq web控制台上有20个消费者,但只能看到10个。
问题是什么?在应用程序端或activemq端有任何配置更改吗?

我正在使用spring-jms(org.springframework.jms.listener.defaultmessageListenerContainer)和activemq 5.8.0

更新:
主题不是我的选项。我只想让一个使用者读取一条消息。
我有以下场景:machine1=activeMQ
machine2=consumer1到consumer10
machine3=consumer11到consumer20

我观察到的是仅来自machine2的使用者从队列中弹出消息
我想要的是,来自machine2和machine3的使用者都应该读取消息


提前表示感谢。

共有1个答案

魏兴邦
2023-03-14

看起来您需要的是消息主题,而不是消息队列。主要区别在于队列就像电子邮件帐户。一旦你读过消息,它就会消失。这就是为什么看起来只有一个客户端处于活动状态,因为它们可能共享同一个队列。

另一方面,消息主题将在消息发送到该主题后立即将消息传递给所有连接的客户端

 类似资料:
  • 在这篇文章中,加里·拉塞尔解释了如何通过编程创建多个Kafka列斯汀来聆听多个主题。。Kafka·斯普林:如何动态或在循环中创建监听器? 现在我想有一个类似的设置也适用于JMSListeners-在那里我可以有一个带有一个@JMSListener的类,并且我可以以编程方式创建该JMSListener的多个实例,每个实例都注入了自己的queueName。 我发现这篇文章Spring JMS开始根据请

  • 问题内容: Python网站上是否有官方文档,内容涉及如何在Linux的同一台计算机上安装和运行多个版本的Python? 我可以找到成千上万的博客文章和答案,但是我想知道是否有“标准”的官方方式来做到这一点? 还是全部取决于操作系统? 问题答案: 我认为这是完全独立的。只需安装它们,然后即可使用命令例如和。链接到您要用作默认值的那个。 无论如何,所有库都位于单独的文件夹中(以版本命名)。 如果要手

  • 问题内容: 我正在使用EJB 3.1,并且想配置一个MDB来侦听多个队列。 我更喜欢通过XML定义队列名称,而其他通过注释定义。 能做到吗? 问题答案: 实例化后,MDB只能侦听在其目标ActivationConfigProperty中指定的资源,但是您 可以 为同一MDB创建具有不同目标的多个实例(在您的情况下为队列)。 在ejb-jar.xml中创建两个条目,它们具有不同的目的地和ejb-na

  • 问题内容: 每个Java应用程序都将在特定的Java虚拟机实例中运行。我真的在以下方面感到困惑,而Google搜索使我更加困惑。不同网站上的不同文章。 如果我有一个用Java编写的Web服务,它将需要一个JVM实例来运行,那么JVM可以成为守护进程吗? 如果是,当我们运行任何其他Java应用程序时,它将使用该JVM实例还是创建一个新的JVM? 任何机器上可用的主内存是恒定的。当我们同时启动n个Ja

  • 我有一个遗留的Spring4.2.1.Release应用程序,它作为侦听器连接到ActiveMQ5.x,现在我们将添加到ActiveMQ Artemis的连接。对于Artemis,我们使用持久订阅,因为我们不希望在订阅服务器关闭时某个主题上的消息丢失,而共享订阅,因为我们希望选择集群或使用并发来异步处理订阅中的消息。我有单独的和,但是从这个不断重复的日志来看,Artemis DMLC由于以下NPE

  • 我刚接触Spring boot,我正在玩弄它。目前,我已经构建了一些应用程序,希望能够通过队列相互通信。我目前有一个侦听器对象,可以从特定队列接收消息。 这有效。但是,现在我希望能够监听另一个队列。所以我想我会复制上面的对象并更改队列名称。不幸的是,这不起作用,因为Spring Boot只为其中一个创建连接。关于如何让我的Spring Boot应用程序监听多个队列的任何想法?