Javascript [stompit STOMP client]故障切换无法与STOMP producer正常工作
我正在使用STOMP客户端。github- 我正在使用API进行重新连接管理。我有以下代码: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
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缺少关于如何使用这些特性的文档。谢谢你的帮助
谢谢,
xabhiAPI没有问题,但设置超时代码有问题。当客户端看到连接失败时,我应该清除超时
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();
});