首页 > 解决方案 > ActiveMQ 线程

问题描述

线程停止和退出需要多长时间ActiveMQConsumer?关闭应用程序时出现分段错误。我发现这是由于 ActiveMQ 线程。如果我评论消费者,则问题不再存在。目前我cms::MessageConsumer在activemq-cpp-library-3.9.4中使用。

我看到activemq::core::ActiveMQConsumerhasisClosed()函数可以用来确认消费者是否已关闭,然后继续删除对象,从而避免分段错误。我假设这将解决我的问题。但我想知道使用这些 ActiveMQ 对象避免线程问题的正确方法是什么?

我与消费者和生产者使用相同的会话,但是当代理停止并启动时,ActiveMQ 重新连接正在添加线程。我没有使用故障转移。

因此,我将会话分开发送和接收,并分别实例化了连接工厂、连接和会话。在由于上述分段错误而未清理应用程序内存之前,此设计没有问题。

这就是为什么我想知道什么时候应该使用cms::MessageConsumervs ActiveMQConsumer

标签: multithreadingactivemq

解决方案


ActiveMQ 网站有包含 CMS 客户端示例的文档。我建议阅读这些并遵循示例代码,了解它如何在应用程序关闭之前关闭连接和库资源,以确保适当地清理资源。

与 JMS 一样,CMS 消费者实例与创建它的会话中的线程链接,因此,如果您要关闭一个好的规则,请遵循关闭会话以确保在您删除任何消费者实例之前停止消息传递。


推荐阅读