队列上的多个消费者
如果你想从队列中并发消费消息,则必须为每个消费者使用不同的会话。
这是因为每个线程都需要一个会话。JMS 协议规定,一个线程一次只能使用一个会话。如果你使用消费者,这意味着如果使用相同的会话,一次只能有一个消费者接收消息。因此,如果你想并发消费消息,你需要为每个消费者使用不同的会话。
但是,你如何建立连接是你的选择。在正常的基于网络的模式下,在会话之间共享相同的连接将实质上通过单个套接字多路复用流量(从而以更多同步为代价减少资源使用)。因此,有时需要使用更多连接,因为通常并发使用不同的套接字往往比使用单个套接字更快。)。
顺便说一句,在 J2EE 1.4 中的 JCA 规范中,资源适配器通常会为每个会话创建一个连接,因此这两个之间存在一对一映射。