码迷,mamicode.com
首页 > 其他好文 > 详细

ActiveMQ-cpp客户端程序应用异常退出问题

时间:2014-11-12 11:50:25      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:activemq   c++   

笔者使用ActiveMQ作为系统中消息分发的服务器,由Java Web程序读取数据库实时记录作为Producer,接收端为C++Builder开发的客户端程序,常驻客户端右下角,弹窗显示实时消息。

测试时发现,当客户端断网(网线拔掉)或者服务器重启等连接中断时,客户端会直接退出,windows也没有报程序崩溃的问题,很是费解。

    Debug调试代码发现问题出在自定义的Concumer类的异常处理时,调用了exit(1);

//SimpleAsyncConsumer.cpp 【1】

void SimpleAsyncConsumer::onException( const CMSException& ex AMQCPP_UNUSED ) 
{
    printf("CMS Exception occurred.  Shutting down client.\n");
    exit(1);
}
注释掉exit(1)后问题解决,客户端不会再异常退出了。不过拔掉网线测试时,客户端不能检测到与服务器连接已断开的状态,笔者采用在SimpleAsyncConsumer类中添加状态变量的方式。

void SimpleAsyncConsumer::onException( const CMSException& ex AMQCPP_UNUSED ) 
{
    printf("CMS Exception occurred.  Shutting down client.\n");
    connflag= false;
}
上层调用程序实时检测连接状态,检测到false时释放资源,等待重新连接。  


【1】引用:http://blog.sina.com.cn/s/blog_a459dcf501017ooh.html 邵明博客ActiveMQ完整的C++客户端例子(源码) ,文中使用的客户端concumer参见此文。

ActiveMQ-cpp客户端程序应用异常退出问题

标签:activemq   c++   

原文地址:http://blog.csdn.net/chenshilianhun_pym/article/details/41040601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!