RabbitMQ-Web-Stomp:恢复丢失的连接

时间:2016-04-14 04:25:14

标签: rabbitmq stomp

我正在使用RabbitMQ-web-stomp插件将JS客户端连接到RabbitMQ。作为客户,我正在使用SockJS。我可以成功建立连接并订阅交换。订阅成功后,将按预期收到消息。

但是,正如我所观察到的,连接经常丢失并且它将停止接收更多消息。为了解决这个问题,我试图编写一些重新连接逻辑,它将使用渐进式延迟重试on_error回调中的连接。在这样做时,我似乎永远无法恢复与同一connection对象的连接。我需要使用:

再次实例化connection对象订阅
var ws = new SockJS(configurations.webSocket);
var client = Stomp.over(ws);

client.heartbeat.incoming = 0;
client.heartbeat.outgoing = 0;

client.connect('Username', 'Password', function () {
    client.subscribe('/exchange/exchangename/topicname', function (e) {
        //subscription callback
    });
}, function (err) {
            console.log('Error in RabbitMQ connection: ', err);
}, '/');

但在执行此操作时,它将创建一个新队列,并且在连接中断时发布的所有消息都不会传递给此客户端。

我该如何解决这个问题?有没有办法在订阅时指定队列名称?如果是这样,我可以指定旧队列名称,它可能绑定到现有队列。

我是RabbitMQ的新手。所以,请建议是否有更好的方法来做我想要实现的目标。

PS:我正在使用主题交换。

0 个答案:

没有答案