ActiveMQ 如何保证 msg 至少发送一次?

How ActiveMQ guarantee msg sent at least once?

我让生产者向 ActiveMQ 代理发送消息,让消费者订阅同一主题。我知道代理可以保留消息,因此一旦消息到达代理,就可以保证消费者可以使用它。 (对吗?)

但是如果producer和ActiveMQ broker之间的网络坏了怎么办,在这种情况下有没有办法保证at-least-once sent?比如,生产者本身可以在发送到 ActiveMQ 代理之前保留消息?

为了建立保证,消息必须到达代理,如果网络出现故障,那么捕获发送错误并稍后重试发送的负担就落在你身上了。 ActiveMQ 客户端不为其发送的内容提供持久存储,您可以使用故障转移传输,客户端将在重新连接时重试发送,但应用程序已关闭并且您没有在重启时提供某种恢复方式,那么就没有了客户可以做的更多事情。