我正在使用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')})
有办法做到这一点吗?
先谢谢。
答案 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();