c – ActiveMQ线程安全吗?

我们想在同一进程的不同线程上运行我们的cms :: MessageConsumer和cms :: MessageProducer.

我们如何安全地做到这一点?

有两个cms :: Connection对象和两个cms :: Session对象,每个对象是消费者和生产者,是否足以保证安全?这有必要吗?

静态库级别的对象之间是否存在共享状态会阻止此类用法?

最佳答案
您应该阅读JMS v1.1规范,它清楚地调出哪些对象在多个线程中有效,哪些不是.即Session,MessageConsumer和MessageProducer被认为在线程之间共享是不安全的.我们通常会尝试尽可能地使它们成为线程安全的,但是肯定有一些方法可以让你自己陷入困境.在每个线程中使用单个会话通常是一个好主意,并且通常最好为每个MessageConsumer / MessageProducer使用会话,因为Session包含单个分派线程,这意味着与许多消费者的会话必须共享其分派线程用于向每个消费者发送消息,这可以根据场景降低延迟.

转载注明原文:c – ActiveMQ线程安全吗? - 代码日志