如何配置Spring Cloud Stream发布者重试?

问题描述 投票:0回答:1

我正在使用RabbitMQ活页夹。

Spring Cloud Stream使开发人员在使用消息时发生异常时重试。

当RabbitMQ连接断开时,生产者可能会失败。我们如何配置SCS,以便在生成消息时发生任何错误时重试?还是有办法在其中安装断路器?

谢谢

spring spring-boot rabbitmq spring-cloud spring-cloud-stream
1个回答
0
投票

您可以使用标准的spring boot propertiesretry.enabled等)-向下滚动到rabbitmq-在生产者端配置重试。绑定器会将重试模板连接到出站适配器的RabbitTemplate

spring.rabbitmq.template.retry.enabled=false # Whether publishing retries are enabled.
spring.rabbitmq.template.retry.initial-interval=1000ms # Duration between the first and second attempt to deliver a message.
spring.rabbitmq.template.retry.max-attempts=3 # Maximum number of attempts to deliver a message.
spring.rabbitmq.template.retry.max-interval=10000ms # Maximum duration between attempts.
spring.rabbitmq.template.retry.multiplier=1 # Multiplier to apply to the previous retry interval.

这是活页夹中的代码...

        if (rabbitProperties != null && rabbitProperties.getTemplate().getRetry().isEnabled()) {
            Retry retry = rabbitProperties.getTemplate().getRetry();
            RetryPolicy retryPolicy = new SimpleRetryPolicy(retry.getMaxAttempts());
            ExponentialBackOffPolicy backOff = new ExponentialBackOffPolicy();
            backOff.setInitialInterval(retry.getInitialInterval().toMillis());
            backOff.setMultiplier(retry.getMultiplier());
            backOff.setMaxInterval(retry.getMaxInterval().toMillis());
            RetryTemplate retryTemplate = new RetryTemplate();
            retryTemplate.setRetryPolicy(retryPolicy);
            retryTemplate.setBackOffPolicy(backOff);
            rabbitTemplate.setRetryTemplate(retryTemplate);
        }
© www.soinside.com 2019 - 2024. All rights reserved.