Block zeromq子发布模式、阻塞和丢失

Block zeromq子发布模式、阻塞和丢失,block,zeromq,Block,Zeromq,我在我的应用程序中使用zeromq sub-pub模式,但我遇到了一个问题: 我启动了sub-app并订阅了消息,然后又启动了pub-app,pub-app在半小时或更长时间内不会发布任何消息,此后,pub-app会将消息发布到sub-app,但sub-app在那里被阻止,没有任何消息,或者部分消息丢失 如果有人知道问题出在哪里?提前感谢您。理想情况下,您应该先启动发布者,然后启动订阅者 此外,请阅读指南中关于发布和订阅之间的消息可能丢失的场景的本节: 如果没有任何附加信息或代码片段,就很难解决

我在我的应用程序中使用zeromq sub-pub模式,但我遇到了一个问题: 我启动了sub-app并订阅了消息,然后又启动了pub-app,pub-app在半小时或更长时间内不会发布任何消息,此后,pub-app会将消息发布到sub-app,但sub-app在那里被阻止,没有任何消息,或者部分消息丢失


如果有人知道问题出在哪里?提前感谢您。

理想情况下,您应该先启动发布者,然后启动订阅者

此外,请阅读指南中关于发布和订阅之间的消息可能丢失的场景的本节:


如果没有任何附加信息或代码片段,就很难解决此问题

实际上,代码片段非常简单,pusblish端每分钟向订阅者发布一条消息,订阅者订阅消息。当发布端每分钟发布一次消息时一切正常,但当我在发布端发布消息前一个多小时添加睡眠时,一个小时后,它会发布消息,但现在,订阅者无法获取任何消息。双方在不同的互联网机器上,而不是在内部网络上。Publisher:#include“stdafx.h”#include int_tmain(int argc,_TCHAR*argv[]){void*context=zmq_ctx_new();void*server=zmq_socket(context,zmq_PUB);zmq_bind(servertcp://192.168.1.212:5555”;printf(“等待一个半小时”);睡眠(1000*60*60*1.5);而(1){char buffer[256]={0};sprintf#s(buffer,“%s”,“Hello World!”);zmq#u send(server,buffer,256,0);printf(“send:%s\n”,buffer);Sleep(1000*60)}返回0;}订阅者:#包括“stdafx.h”#包括int#tmain(int argc,#TCHAR*argv[){void*context=zmq_ctx_new();void*socket=zmq_socket(context,zmq_SUB);zmq_connect(sockettcp://202.101.xxx.xx:5555”;zmq_setsockopt(socket,zmq_SUBSCRIBE,”,0);而(1){char buffer[256]={0};zmq_recv(socket,buffer,256,0);printf(“recv:%s\n,buffer);}返回0;}我想这是因为我没有在我的套接字中设置ZMQ_TCP_KEEPALIVE,对吗?