我正在从zeroMQ实现完整的异步majordomo模式。
我很难理解参考实现中删除工作程序的各种原因,尤其是关于worker_ready
属性。
例如在python代理示例(http://zguide.zeromq.org/py:mdbroker)中, 在处理工作人员消息时会这样做:
if (MDP.W_READY == command):
assert len(msg) >= 1 # At least, a service name
service = msg.pop(0)
# Not first command in session or Reserved service name
if (worker_ready or service.startswith(self.INTERNAL_SERVICE_PREFIX)):
self.delete_worker(worker, True)
worker_ready
布尔值的计算方法是:检查工作程序是否在“已知工作程序”列表中,之前,然后创建一个工作程序实例(并将其添加到已知列表中)工人)。 worker_ready
的更具描述性的名称可能是worker_known
。
我不明白-如果工作人员正在传达的信息是“ READY”(就绪),并且先前已经知道,那么为什么要删除它呢? (删除工作人员包括将其从已知工作人员列表和闲置工作人员列表中删除)