Как настроить повторные попытки издателя Spring Cloud Stream? - PullRequest
0 голосов
/ 28 сентября 2019

Я использую подшивку RabbitMQ.

Spring Cloud Stream позволяет разработчикам повторять попытки при возникновении исключений в качестве потребляющих сообщений.

Производители могут потерпеть неудачу, если соединение RabbitMQ потеряно.Как мы можем настроить SCS так, чтобы он повторял попытки при возникновении любой ошибки при создании сообщений?Или есть способ применить выключатель там?

Спасибо

1 Ответ

1 голос
/ 29 сентября 2019

Вы можете использовать стандартные свойства весенней загрузки (retry.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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...