【问题标题】:how should I handle polling in ZMQ in node.js?我应该如何在 node.js 中处理 ZMQ 中的轮询?
【发布时间】:2014-07-22 22:18:39
【问题描述】:

我正在用 node.js 构建一个 Paranoid Pirate。从一些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 doesn't seem to use Pollers。节点中的解决方案是否只对消息使用回调?我应该如何处理POLLIN 状态?

【问题讨论】:

  • 我猜,你是对的。由于 node.js 以使用基于事件的操作模型而闻名,使用回调来响应消息接收听起来很自然。其实不是“缺少Poller”,而是“实现完成”。
  • 我怀疑是这样,但我对如何在节点中实现socks = dict(poller.poll(HEARTBEAT_INTERVAL * 1000)) 持空白。我想我只是不需要?

标签: javascript python node.js zeromq


【解决方案1】:

轮询器在 node.js 中是多余的。这只是消息回执的回调。在节点中使用 ZMQ 需要稍微改变“传统” ZMQ 方法和架构,因为所有非阻塞和事件处理的内置策略都被卸载到节点,节点自然地处理这些东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2015-03-27
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2011-11-11
    • 2016-11-21
    相关资源
    最近更新 更多