Javascript [stompit STOMP client]故障切换无法与STOMP producer正常工作

Javascript [stompit STOMP client]故障切换无法与STOMP producer正常工作,javascript,node.js,activemq,stomp,Javascript,Node.js,Activemq,Stomp,我正在使用STOMP客户端。github- 我正在使用API进行重新连接管理。我有以下代码: var stompit=require('stompit') var重接={ “maxReconnects”:100, “随机化”:false }; var connManager=new stompit.ConnectFailover(“故障转移:(stomp://mqbroker.nyc:61613,stomp://failovermqbroker.nyc:61613)“,重新连接); connM

我正在使用STOMP客户端。github-

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

var stompit=require('stompit') var重接={ “maxReconnects”:100, “随机化”:false }; var connManager=new stompit.ConnectFailover(“故障转移:(stomp://mqbroker.nyc:61613,stomp://failovermqbroker.nyc:61613)“,重新连接); connManager.on('error',函数(error){ var connectArgs=error.connectArgs; var address=connectArgs.host+':'+connectArgs.port; console.error('无法连接到'+地址+':'+错误消息); }); connManager.on('连接')功能(连接器){ var address=connector.serverProperties.remoteAddress.transportPath; console.log('连接到'+地址); }); var totalMsgs=50; var计数=0; var delayMs=10000; connManager.connect(函数(错误、客户端、重新连接){ 如果(错误){ 日志(“终端错误,放弃重新连接:+错误”); 返回; } client.on('error',函数(error){ //销毁当前客户端 客户端。销毁(错误); //调用reconnect是可选的,如果 //同样的错误将重复出现。 重新连接(); }); 变量sendParams={ “目的地”:“/queue/myqueue”, “persistent”:“true” } 函数sendMsg(){ setTimeout(函数(){ console.log('发送消息'+(计数)); send(sendParams.end('Hello number'+(count)); 如果(计数+++
问题是,当客户端与MessageBroker断开连接时,生产者会继续执行sendMsg代码,这会导致其间丢失2-3条消息。我希望客户端在处于断开连接状态时停止执行,并在连接到故障转移实例时恢复

我是否错误地使用了API?实现这一目标的正确方法是什么

已经入侵了一段时间,但是这个API缺少关于如何使用这些特性的文档。谢谢你的帮助

谢谢,
xabhi

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(); });