zeromq.node還不支持對send
消息的回覆回調。
有一個問題在GitHub上討論了好幾年,人們認爲這是一個明智的修改。
我遵循another question的建議,因爲我真的想在更高級別使用Promises,因此需要REQ/REP機制的回調。即回調從'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);
}
感覺就像是有問題的技巧,但我希望zeromq.node庫得到最終更新。
沒有什麼可以肯定的是,消息是在ZeroMQ中真正發送的,所有的API函數都會將消息排入隊列,以便稍後在可能的情況下由後臺線程發送消息。當您需要確認時,另一端點在收到消息時必須將其發回。但我同意,也許可以用更好的方式編寫這些庫,以便您可以確切地說出哪些API調用失敗。 – tchap
axon req/res讓我這樣做。但我不知道,如果它的生產好 –
你可能不得不嘗試:-)但它看起來像2個月前有1.0.0發佈... – tchap