Network programming ZeroMQ路由器丢失消息

Network programming ZeroMQ路由器丢失消息,network-programming,zeromq,Network Programming,Zeromq,情况如下: 2个ZMQ_路由器插座,A和B A绑定到地址并被分配身份 B绑定到一个地址,被分配一个身份,还连接到A 他们聊了一会儿,一切都很好 我故意关闭B插座 使用所有相同的参数重新打开、反弹和重新连接B插座,并指定与之前相同的标识 B向A发送消息 A没有看到消息。然而,我注意到了tcpdump输出中B的消息(tcpdump正在监视A端口上的所有流量) 这让我相信zmq出于某种原因删除了B的第二条消息。有人能解释一下这里发生了什么吗?尝试在第二次发送之前添加一个睡眠(“B向a发送消息”)(

情况如下:

  • 2个ZMQ_路由器插座,A和B
  • A绑定到地址并被分配身份
  • B绑定到一个地址,被分配一个身份,还连接到A
  • 他们聊了一会儿,一切都很好
  • 我故意关闭B插座
  • 使用所有相同的参数重新打开、反弹和重新连接B插座,并指定与之前相同的标识
  • B向A发送消息
  • A没有看到消息。然而,我注意到了tcpdump输出中B的消息(tcpdump正在监视A端口上的所有流量)

这让我相信zmq出于某种原因删除了B的第二条消息。有人能解释一下这里发生了什么吗?

尝试在第二次发送之前添加一个睡眠(“B向a发送消息”)(zmq connect是异步的)
路由器到
路由器
在zmq中很难实现;你读过这本书吗?它描述了如何做到可靠。嗨,伙计们,谢谢你们的评论。我发现重新使用套接字身份显然导致了这种奇怪的行为。当断开的插座以不同的身份重新连接时,问题就消失了