【发布时间】:2020-11-02 22:36:53
【问题描述】:
我注意到 Artemins 的奇怪行为。我不确定这是一个错误还是我不明白什么。
我使用 Artemis Core API。我将autoCommitAcks 设置为false。我注意到如果在MessageHandler 中收到消息,但消息未被确认并且会话被回滚,那么 Artemis 不会认为此消息未送达,Artemis 认为此消息根本没有发送给消费者。参数 max-delivery-attempts 在这种情况下不起作用。消息被无限次重新传递。方法 org.apache.activemq.artemis.api.core.client.ClientMessage#getDeliveryCount 每次返回 1。消息在 Web 控制台的 Redelivered 列中具有 false 值。如果在会话回滚之前确认消息,则 max-delivery-attempts 可以正常工作。
消息确认的目的究竟是什么?确认意味着仅接收到消息,还是确认意味着成功接收和处理消息?也许我可以同时使用确认,这仅取决于我的要求?
通过消息确认我的意思是调用org.apache.activemq.artemis.api.core.client.ClientMessage#acknowledge 方法。
【问题讨论】:
标签: activemq-artemis