我正在java中使用RabbitMQ。我想发布多条消息,知道经纪人是否收到它。请注意,我不想知道消息是否已确认。我发现的例子似乎依赖于客户端发送 basicAck 或 Nack。
ch.setConfirmListener(new ConfirmListener() {
public void handleAck(long seqNo, boolean multiple) {
if (multiple) {
unconfirmedSet.headSet(seqNo+1).clear();
} else {
unconfirmedSet.remove(seqNo);
}
}
public void handleNack(long seqNo, boolean multiple) {
// handle the lost messages somehow
}
});
我只想知道消息是否在 basicPublish 之后作为发布者在代理中收到。
您正在寻找发布者确认。
您引用的 ACK 用法适用于消费者,因为 RabbitMQ 要求在将消息从队列中删除之前对其进行 ACK。
请注意,接收已发布消息的确认并不意味着该消息已存储在队列中:该消息可以是"不可路由的",在这种情况下,确认会立即发送给发布者,但消息会被丢弃。请参阅:何时确认消息
如果还想跟踪无法路由的邮件,则必须使用备用交换。