我该如何在Node.js中处理ZMQ的轮询?
我正在用node.js构建一个“偏执海盗”的项目。最开始我用了一些python代码:
poller = zmq.Poller()
liveness = HEARTBEAT_LIVENESS
interval = INTERVAL_INIT
heartbeat_at = time.time() + HEARTBEAT_INTERVAL
worker = worker_socket(context, poller)
cycles = 0
while True:
socks = dict(poller.poll(HEARTBEAT_INTERVAL * 1000))
# Handle worker activity on backend
if socks.get(worker) == zmq.POLLIN:
# Get message
# - 3-part envelope + content -> request
# - 1-part HEARTBEAT -> heartbeat
frames = worker.recv_multipart()
这个Go语言的示例代码也用了一个叫Poller的东西。
我遇到的问题是,zeromq.node似乎不支持Pollers。在node里,解决这个问题的方法是直接在消息上使用回调吗?我应该怎么处理POLLIN
状态呢?
1 个回答
2
在node.js中,轮询器是多余的。其实就是在收到消息时调用回调函数。要在node中使用ZMQ,你需要稍微调整一下“传统”的ZMQ方法和架构,因为node会自然处理所有内置的非阻塞和事件处理策略。