使用ZeroMQ的倒置PUB/SUB问题

Ale*_*ysh 6 linux ipc publish-subscribe zeromq

我正在尝试使用ZeroMQ设置"倒置"PUB/SUB.

这意味着订阅(SUB)套接字属于几个长期存在的服务器,正在做zmq_bind(); 和发布(PUB)套接字是一个短命的客户端zmq_connect().

我用一个ipc://插座.

我希望发布商的消息能够覆盖每个订阅者.

问题:只有一个订阅者进程收到消息.如果该过程消失,发布者就会陷入困境zmq_term().

这种操作模式是否受zmq支持?如果是,那么我做错了什么?如果没有,那么如何实现我需要的东西?

带有一些额外细节的最小例子(在Lua中,但这不应该):https://gist.github.com/938429

Neo*_*ium 6

你不能将多个套接字绑定到一个ipc://地址(我们在这里谈论Unix域套接字ipc:///tmp/test.ipc == file /tmp/test.ipc).

您可以做的是将每个SUB套接字绑定到不同的ipc://地址,并让发布者将一个PUB套接字连接到每个这些地址.ZeroMQ允许一个套接字绑定/连接到多个地址.

zmq_term()上的阻塞很可能是为了延迟关闭问题(即PUB套接字尝试发送消息).看一下ZMQ_LINGER套接字选项.