首页 > 其他 > 详细

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

时间:2014-11-12 11:48:44      阅读:272      评论:0      收藏:0      [点我收藏+]

笔者使用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客户端程序应用异常退出问题

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!