JMS QueueSender线程安全吗?

meb*_*ada 15 java queue jms thread-safety

我想在多线程环境中使用QueueSender.

QueueSender.send()线程安全的?

Joa*_*uer 13

不,a MessageProducer/ QueueSender不是线程安全的.

或者更具体地说:这Session不是线程安全的.JavaDoc Session在第一句中明确提到了这一点:

Session对象是用于生成和使用消息的单线程上下文.

由于a MessageProducer/ QueueSender绑定到a,Session你不能同时从多个线程使用它.实际上你不能在不同时间从两个不同的线程中使用它!


Ani*_*kur 11

以下截图来自JMS2规范

在此输入图像描述

如您所见,Session Object不支持并发线程的使用.Session不是线程安全的Object.与从该Session实例创建的所有对象相同的gos Messages,Producers,Consumers.因此,这些对象不能由两个线程共享,这是客户端应该关注的而不是JMS提供者.