【问题标题】:NodeJS ZeroMQ , no callback for send?NodeJS ZeroMQ,发送没有回调?
【发布时间】:2013-10-22 16:16:24
【问题描述】:

我有多个 nodejs 服务器位于不同的位置,我需要通过 tcp 套接字创建一个 IPC,为此我使用 ZeroMQ。我需要以异步方式请求/响应或发布/订阅之类的东西,并确认消息已发送,但是看到 node-zeromq 模块我发现所有发送方法都是同步的,并且无法确认通过 a 发送的消息回调

总之, 我需要socket.send(message,function(err,res){;});之类的东西 但我发现了这个socket.send(message)

任何人都知道如何使用 ZeroMQ 或任何其他我可以可靠地 IPC 并以肯定作为响应的方式来做到这一点?

更新:我发现https://github.com/visionmedia/axon,Axon 和它的 req/rep 发送方法有一个回调,如果有人能对此有更多的了解,那就太好了。建议?

【问题讨论】:

  • 没有什么比确认消息是在 ZeroMQ 中真正发送的更重要的了,所有的 API 函数只是将消息排入队列,以便稍后在可能的情况下由后台线程发送。当您需要确认时,另一个端点必须在收到消息时将其发回。但我同意,也许这些库可以用更好的方式编写,这样您就可以准确地说出哪个 API 调用失败了。
  • axon req/res 让我这样做。但我不确定它的生产是否正常
  • 您可能不得不尝试 :-) 但看起来大约 2 个月前发布了 1.0.0...

标签: node.js ipc cluster-computing zeromq publish-subscribe


【解决方案1】:

您可以在 ZMQ 中使用请求/回复模式而不是发布/订阅模式。我相信当你发出请求时,会有一个回调来监听响应,而不是 pub.send()...

【讨论】:

    【解决方案2】:

    zeromq.node 还不支持send 消息的回复回调。

    GitHub 上讨论了几年来人们认为这是一个明智的修改。

    我遵循了another question 的建议,因为我真的很想在更高级别使用 Promises,因此需要对 REQ/REP 机制进行回调。 IE。回调是从'message' 事件处理程序调用的:

    var socket, onRepHandler, replyCallback, send;
    socket = zmq.socket('req');
    onRepHandler = function (reply) {
        // HACK
        // This handler is a workaround until zeromq.node supports
        // direct callback for REQ/REP:
        // https://github.com/JustinTulloss/zeromq.node/issues/48
        if (replyCallback) {
            replyCallback(reply);
        }
        replyCallback = undefined;
    };
    socket.on('message', onRepHandler(msg));
    socket.connect(address);
    
    // Send method with callback
    send = function (msg, repcb) {
        if (replyCallback) {
            throw new Error('Cannot send request before receiving reply of preceding request!');
        }
        replyCallback = repcb;
        socket.send(msg);
    }
    

    感觉像是一个有问题的 hack,但我希望 zeromq.node 库最终得到更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      相关资源
      最近更新 更多