2016-02-29 112 views
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

回答

0

没有问题的API,但与setTimeout的代码。当客户端发现连接失败时,我应该清除超时。

相关问题