ActiveMQ客户端:多生产者如何共享连接
ActiveMQ-cpp 共享连接的线程安全问题
ActiveMQ-cpp 的 Connection 对象本身是线程安全的,它内部已经实现了对底层网络连接访问的序列化控制,不需要你自行编写协调组件。
针对你的场景补充几点细节:
- 你现在每个线程持有独立的
Session和Producer的设计是正确的:Session本身不是线程安全的,绝对不能跨线程共享,每个线程单独维护自己的实例完全符合线程安全要求。 - 多个线程通过各自的
Session/Producer发送消息时,共享的Connection会自动保证同一时间只有一个发送操作占用网络连接,不会出现不同线程抢占连接的情况。 - 注意:如果是同一个
Session创建的Producer,也不能跨线程使用,但你的设计里每个线程对应自己的Session,所以这一点也不存在风险。
简单来说,你的方案是安全的,ActiveMQ-cpp 已经帮你处理了连接访问的序列化问题。
内容的提问来源于stack exchange,提问作者arayq2
相关产品推荐
相关产品推荐

