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

时间:2011-04-15 10:32:16

标签: session jms activemq

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

我使用ActiveMQ实现。

1 个答案:

答案 0 :(得分:2)

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

  1. 使用一个具有多个会话的连接,每个会话都有一个接收器。连接是线程安全的,您可以通过单个连接创建多个会话。
  2. ActiveMQ为您提供了许多关于multiplexing multiple destinations的选项,因此您可能希望专注于一个接收器而不是拥有多个接收器,而是使用ActiveMQ的工具来创建虚拟目标,这些目的地将通过所需的所有消息汇集到一起。一个接收器。
  3. 请参阅this question