如何知道stomp消息是否已正确发送?¿

时间:2017-03-21 10:47:35

标签: javascript rabbitmq stomp sockjs web-stomp

我正在使用webstomp与我的消息代理(在这种情况下是兔子)进行交流。

当我想写一条消息时,我会执行以下操作:

import * as SockJS from 'sockjs-client';
let client = Stomp.over(new SockJS(serverAddress));
client.connect(user, pass, onConnect, onError);
client.send('/exchange/amq.direct/test', {test: 'one', test2: 'two'});

Rabbit正确接收了此消息,但我希望有一种方法来确认这个消息而不是通过。类似于:

client.send('/exchange/amq.direct/test', {test: 'one', test2: 'two'})
.then(() => {console.log('Message received correctly')})
.catch((err) => {console.log('Imposible send the message')})

有办法做到这一点吗?

先谢谢。

1 个答案:

答案 0 :(得分:1)

邮件可以从发布者可靠地传输到代理。 (使用交易或确认)。消息也可以传输 可靠地从经纪人到消费者。 (使用确认) 总之,这提供了从出版商到消费者的可靠转移。

所以在这种情况下我应该添加这个标题:

{persistent: true}

或使用交易:

// start the transaction
var tx = client.begin();
// send the message in a transaction
client.send("/queue/test", {transaction: tx.id}, "message in a transaction");
// commit the transaction to effectively send the message
tx.commit();