为什么QueueSession只能在JMS中创建一个接收器?

为什么QueueSession只能在JMS中创建一个接收器?,session,jms,activemq,Session,Jms,Activemq,我可以让一些发送者发送一些消息,但当我在一个会话中创建两个接收者时,第一个有效,第二个被阻止。在调试中,我看到第二个接收器接收到的队列列表大小为零。我发现会话是针对一个线程进行的,我不知道这个问题是否涉及到不安全的线程 我使用ActiveMQ实现。JMS会话是绝对单线程的。因此,它只能有一个活动接收器。您有两种选择: 对多个会话使用一个连接,每个会话都有一个接收器。连接是线程安全的,您可以从单个连接创建多个会话 ActiveMQ为您提供了许多有关的选项,因此您可能不希望有多个接收者,而是希望专注

我可以让一些发送者发送一些消息,但当我在一个会话中创建两个接收者时,第一个有效,第二个被阻止。在调试中,我看到第二个接收器接收到的队列列表大小为零。我发现会话是针对一个线程进行的,我不知道这个问题是否涉及到不安全的线程


我使用ActiveMQ实现。

JMS会话是绝对单线程的。因此,它只能有一个活动接收器。您有两种选择:

  • 对多个会话使用一个连接,每个会话都有一个接收器。连接是线程安全的,您可以从单个连接创建多个会话
  • ActiveMQ为您提供了许多有关的选项,因此您可能不希望有多个接收者,而是希望专注于一个接收者,而是使用ActiveMQ的功能来创建虚拟目的地,通过一个接收者将您想要的所有消息汇集在一起