zmqのrouterがメッセージの隠しパラメータを受け取り、処理する問題について
記事の目次原因 は を参照してください.
最近はnodejsサーバーでzmqを使っています.JavaScriptを使っていますので、zromq.js[1]を使っています.(zmqを使っていません.windowsの下にzmqがインストールされています.node-gypはコンパイルされていません.早く出ますので、一旦諦めました.)その結果、最初から一つの問題があります.routerはdealerにメッセージを送って、受信できませんでした.
原因
参照[2]は、主にrouterがメッセージを受信するとき、デフォルトの最初のパラメータはorign socketであり、メッセージを送るときに最初のパラメータはどれに送るべきかを知るためです.
A Router can be used to exted request/reply sockets.When receiving message a Router share prepend a message part containing the routing id of the originating peer to the message.Message received are faire-frome.the first part of the message is removed and used to determine the routing id of the peer the message shound be routed to.
テストコード: router.jsファイル dealer.js
[1]zmq-github
[2]ゼロムq.js-router
最近はnodejsサーバーでzmqを使っています.JavaScriptを使っていますので、zromq.js[1]を使っています.(zmqを使っていません.windowsの下にzmqがインストールされています.node-gypはコンパイルされていません.早く出ますので、一旦諦めました.)その結果、最初から一つの問題があります.routerはdealerにメッセージを送って、受信できませんでした.
原因
参照[2]は、主にrouterがメッセージを受信するとき、デフォルトの最初のパラメータはorign socketであり、メッセージを送るときに最初のパラメータはどれに送るべきかを知るためです.
A Router can be used to exted request/reply sockets.When receiving message a Router share prepend a message part containing the routing id of the originating peer to the message.Message received are faire-frome.the first part of the message is removed and used to determine the routing id of the peer the message shound be routed to.
テストコード:
const zmq = require("zeromq")
async function run() {
const sock = new zmq.Router
await sock.bind("tcp://127.0.0.1:3000")
console.log("Worker connected to port 3000")
while (true) {
await sock.send("some work")
const [id, msg] = await sock.receive()
console.log('msg = ', id, msg.toString())
sock.send([id, "I,m broker."])
}
}
run()
const zmq = require("zeromq")
async function run() {
await sock.connect("tcp://127.0.0.1:3000")
console.log("Producer bound to port 3000")
while (true) {
await sock.send("some work")
const [msg] = await sock.receive()
console.log('msg = ', msg.toString())
await new Promise(resolve => setTimeout(resolve, 500))
}
}
run()
参照[1]zmq-github
[2]ゼロムq.js-router