ActiveMQ Artemis 重新传递延迟

ActiveMQ Artemis redelivery delay

设置:

问题: 当 X 条消息并行处理并且存在乐观锁定问题时,只有 1 条消息通过,所有其他消息都会延迟重新安排。当重新传递发生时,X-1 消息将同时到达,因为延迟是相同的,并且导致相同的问题,只有一个通过。

问题:有谁知道一种方法可以增加 ActiveMQ Artemis 的重新交付延迟时间的方差?

注意:我知道在 ActiveMQ 5.x 中有一个名为 collisionAvoidanceFactor 的选项,但 ActiveMQ Artemis 中没有。

如您所见,ActiveMQ Artemis 中没有 collisionAvoidanceFactor 的等效项。我知道没有办法以类似的方式修改重新交付延迟。有 redelivery-delay-multiplier,但它在重新交付中始终如一地强制执行,不会提供您正在寻找的差异。

您可以考虑使用 message grouping,以便 "messages that share common data" 由同一消费者连续使用,从而首先避免锁定问题。

在查看了实现此功能所需的条件后,我打开了 ARTEMIS-2364。我很快就会发送 pull-request,所以它可能会出现在下一个版本的 Artemis(即 2.10)中。