0
我正在使用stompit STOMP客户端。 github - https://github.com/gdaws/node-stomp。[stompit STOMP客户端]故障转移无法正常使用STOMP生产者
我正在使用ConnectFailover API进行重新连接管理。我有下面的代码:
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