rabbitmq heartbeat

ichinaopensource 发布于 2014/03/21 18:00
阅读 792
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

@摩云飞 你好,想跟你请教个问题:

之前你给我指导的rabbitmq-c客户端我现在基本调通了,快要上线了,现在突然发现个问题。publish时,过大概180秒后连接就会被服务端主动关闭掉,在这期间发送了3次心跳包,我调用login时设置的心跳为60秒,而对于consume则不存在这个问题,心跳包会每隔60秒发送一次,保持连接畅通。不知道是什么原因,网上查的说当客户端发送tune-ok信令后,服务端会启用两个进程,一个负责检查定期发送心跳包,一个负责检查接收心跳包的发回数据,如果接收不到或者超时就会主动关闭客户端的连接,不知道该怎么避免呢?http://www.tuicool.com/articles/EbaIviJ

 

加载中
0
hncscwc
hncscwc

从描述的现象来看,感觉是你的生产者很长时间没有发消息给服务端,并且服务端给你的生产者发送心跳包后,生产者没有回应,所以等三次超时时间后直接关闭tcp连接。

你可以抓个包来确认下生产者是否有回应服务端发过来的心跳包。

0
ichinaopensource
ichinaopensource

好的,谢谢您啊,我还没仔细看过rabbitmq-c数据帧的发送细节,周末好好看下,到时候再请多教您啊,周末愉快.

0
摩云飞
摩云飞
恩,你的现象描述的很准确,目前github上的rabbitmq-c确实这个问题,并且在其代码注释中也已经说明了“Note rabbitmq-c only has partial support for heartbeats, as of v0.4.0 they are only serviced during amqp_basic_publish() and amqp_simple_wait_frame()/amqp_simple_wait_frame_noblock()”。其实你主要仔细看一下上述3个接口中的实现就会明白了。有不明白的地方可以继续交流。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部