如何检测到ROUTER的REQ连接事件

时间:2015-10-12 16:27:00

标签: node.js zeromq

我想要什么?

每当 REQ requester.connect() host:port ROUTER的{​​{1}} {}}} do something 连接时, cluster.fork(); 就会检测到此事件, //Start Evented Child Node Processes alongwith a Request REQ Each router.on("accept", function funcCB (fileDesc, endPt) { //fire up a cluster fork for handling Requests console.log("starting a new FORK process"); cluster.fork(); }); ,即在这种情况下router.on(<event>)

我试过了:

requester.connect()

connect - ZMQ_EVENT_CONNECTED connect_delay - ZMQ_EVENT_CONNECT_DELAYED connect_retry - ZMQ_EVENT_CONNECT_RETRIED listen - ZMQ_EVENT_LISTENING bind_error - ZMQ_EVENT_BIND_FAILED accept - ZMQ_EVENT_ACCEPTED accept_error - ZMQ_EVENT_ACCEPT_FAILED close - ZMQ_EVENT_CLOSED close_error - ZMQ_EVENT_CLOSE_FAILED disconnect - ZMQ_EVENT_DISCONNECTED 实际应该检测到什么

<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>bdid\(%X{bdid}\) - %d{HH:mm:ss.SSS} %msg%n</pattern>
    </encoder>
</appender>

...

根据此here,这些是节点zmq可用的监视器事件:

这些是按照那里的文档触发的事件:

bdid(0b5d3877-f3dd-4189-8b1b-489c8b617f2a) 18:22:25.206

2 个答案:

答案 0 :(得分:1)

它是如何工作的?

ZeroMQ 的美妙之处在于它的架构。这意味着,抽象的可缩放原型基元(PUB / SUBPAIRXREQ)完全按照这些原型进行定义。

干净的架构将 I/O-thread (s)与socket&#39; s-entry-gate&#34; 行为&#34;分开。并保留所有脏东西:: enter image description here

这就是说,我希望 ROUTER 来检测和处理这个,如果没有定义在 { {1}} 架构。

怎么做?

对此和类似需求的最简单方法是设计一个自己的复合元素,为了简单起见,我们将其作为[ZeroMQ + {{ 1}}],其中节点同时具有 [ROUTER] -trafic-oriented行为,并且还保持 [SUB] -signalling-receiving行为,通过另一个[ROUTER]

[SUB]向外界展示

这样,远程进程SUB.bind()host:portSIG就可以根据您的设计需要和实现在传输平面和信令平面上运行。

REQ.connect( host:port) 是一款可爱的LEGO工具箱。 enter image description here 享受这些力量。

答案 1 :(得分:0)

所以答案是@Jason here on the SO comments section

发布的这个小小的补充
//start the socket ROUTER monitor
            router.monitor(500, 0);