我正在尝试使用 Spring 的 StatefulRetryOperationsInterceptor 为 RabbitMQ 实现示例重试机制。
如文档中所述,我需要设置消息密钥生成器,因为消息 ID 不存在。我不明白的是每条消息生成的唯一 ID 的真正用法。即,当我使用以下实现时,重试没有任何问题:
StatefulRetryOperationsInterceptor interceptor =
RetryInterceptorBuilder.stateful()
.maxAttempts(3)
.backOffOptions(2000, 1, 2000)
.messageKeyGenerator(
new MessageKeyGenerator() {
@Override
public Object getKey(Message message) {
return 1;
}
);
container.setAdviceChain(new Advice[] {interceptor});