JMS QueueSender 线程是否安全?
2022-09-03 05:31:54
我想在多线程环境中使用 QueueSender。
线程安全吗?QueueSender.send()
我想在多线程环境中使用 QueueSender。
线程安全吗?QueueSender.send()
否,a / 不是线程安全的。MessageProducer
QueueSender
或者更具体地说:会话
不是线程安全的。JavaDoc 在第一句话中明确提到了这一点:Session
Session 对象是用于生成和使用消息的单线程上下文。
并且由于 a / 绑定到 a,因此不得同时从多个线程使用它。事实上,您也不得在不同时间从两个不同的线程使用它!MessageProducer
QueueSender
Session
以下屏幕截图来自 JMS2 规范
如您所见,会话对象不支持并发线程的使用。会话不是线程安全对象。从该会话实例创建的所有对象也是如此,例如 .因此,这些对象不能由两个线程共享,这是客户端应该处理的问题,而不是JMS提供程序。Messages,Producers,Consumers