JMS QueueSender 线程是否安全?

2022-09-03 05:31:54

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

线程安全吗?QueueSender.send()


答案 1

否,a / 不是线程安全的。MessageProducerQueueSender

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

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

并且由于 a / 绑定到 a,因此不得同时从多个线程使用它。事实上,您也不得在不同时间从两个不同的线程使用它!MessageProducerQueueSenderSession


答案 2

以下屏幕截图来自 JMS2 规范

enter image description here

如您所见,会话对象不支持并发线程的使用。会话不是线程安全对象。从该会话实例创建的所有对象也是如此,例如 .因此,这些对象不能由两个线程共享,这是客户端应该处理的问题,而不是JMS提供程序。Messages,Producers,Consumers


推荐