[stompit STOMP 客户端]故障转移无法与 STOMP 生产者正常工作

[stompit STOMP client]Failover not working properly with STOMP producer

我正在使用 stompit STOMP client. github - https://github.com/gdaws/node-stomp

我正在使用 ConnectFailover API 进行重新连接管理。我有以下代码:

 </p>

var stompit = require('stompit')
var reconnectOptions = {
    'maxReconnects': 100,
    'randomize'    : false
};

var connManager = new stompit.ConnectFailover("failover:(stomp://mqbroker.nyc:61613,stomp://failovermqbroker.nyc:61613)", reconnectOptions);

connManager.on('error', function(error) {
    var connectArgs = error.connectArgs;
    var address = connectArgs.host + ':' + connectArgs.port;
    console.error('Could not connect to ' + address + ' : ' + error.message);
});

connManager.on('connecting', function(connector) {
    var address = connector.serverProperties.remoteAddress.transportPath;
    console.log('Connecting to ' + address);
});

var totalMsgs = 50;
var count = 0;
var delayMs = 10000;

connManager.connect(function(error, client, reconnect) {
    if (error) {
        console.log("terminal error, given up reconnecting: " + error);
        return;
    }
    client.on('error', function(error) {
        // destroy the current client
        client.destroy(error);
        // calling reconnect is optional and you may not want to reconnect if the
        // same error will be repeated.
        reconnect();
    });

   var sendParams = {
       'destination' : '/queue/myqueue',
       'persistent'  : 'true'
   }

   function sendMsg (){
       setTimeout( function () {
           console.log ('sending message ' + (count));
           client.send(sendParams).end('Hello number ' + (count));
           if (count++ < totalMsgs) {
             sendMsg(count);
           }
           else {
             client.send(sendParams).end('DISCONNECT');
             client.disconnect();
             console.log("Done.");
           }
         }, delayMs);
    }

   sendMsg();
});

问题是,当客户端与消息代理断开连接时,生产者会继续执行 sendMsg 代码,这会导致中间丢失 2-3 条消息。我希望客户端在断开连接状态时停止执行,并在连接到故障转移实例时恢复。

我使用 API 不正确吗?实现此目标的正确方法是什么?

已经研究了一段时间,但是 API 缺少关于如何使用这些功能的文档。感谢所有帮助。

谢谢, xabhi

API没有问题,但是setTimeout代码有问题。当客户端看到连接失败时,我应该清除超时。