我实现了ZMQ的最后值缓存(LVC)示例(http://zguide.zeromq.org/php:chapter5#Last-Value-Caching),但无法让第二个订阅者在后端注册.
订户首次登机时,event[0] == b'\x01'条件得到满足并且缓存的值被发送,但第二个订户(同一主题)甚至没有注册(if backend in events:永远不会).其他一切都很好.数据从发布者传递给订阅者(全部).
这可能是什么原因?后端的连接方式是否正确?这种模式是否只适用于第一个订户?
更新
当我将第二个订阅者订阅到另一个主题时,我得到了正确的行为(即\x01订阅时).这似乎对第一个用户起作用.是ZeroMQ中的错误吗?
更新2
下面是一个最小的工作的例子,表明LVC模式不工作(至少不是在这里实施的方式).
# subscriber.py
import zmq
def main():
ctx = zmq.Context.instance()
sub = ctx.socket(zmq.SUB)
sub.connect("tcp://127.0.0.1:5558")
# Subscribe to every single topic from publisher
print 'subscribing (sub side)'
sub.setsockopt(zmq.SUBSCRIBE, b"my-topic")
poller = zmq.Poller()
poller.register(sub, zmq.POLLIN)
while True:
try:
events = dict(poller.poll(1000))
except KeyboardInterrupt:
print("interrupted")
break
# Any new topic data we cache and then forward
if sub in events:
msg = …Run Code Online (Sandbox Code Playgroud)