Пружинная загрузка rabbitmq Конфигурация повторной попытки соединения - PullRequest
0 голосов
/ 22 июня 2019

У меня есть весенние загрузочные облачные микросервисы с rabbitmq, я использую docker-compose для запуска всех контейнеров.Rabbitmq нужно некоторое время для запуска, и прежде чем он завершится, я вижу много попыток подключения:

config-service_1          | 2019-06-22 16:13:13.351  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.351  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.370  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.370  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.378  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.379  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.379  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.386  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.386  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.391  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672
config-service_1          | 2019-06-22 16:13:13.401  INFO 6 --- [pool-2-thread-2] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: rabbitmq:5672

Как я могу настроить время ожидания повтора для подключения rabbitmq?
Я не нашел ни одного свойства spring.rabbitmq.**сделать это.

Обновление

Обнаружил проблему, но все еще не могу ее исправить.
У меня есть конфигурация регистрации, которая отправляет журналы через приложение rabbitmq, вот logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <springProperty scope="context" name="appName" source="spring.application.name"/>
    <springProperty scope="context" name="rabbitMqHost" source="spring.rabbitmq.host" defaultValue="localhost"/>
    <springProperty scope="context" name="rabbitMqPort" source="spring.rabbitmq.port" defaultValue="5672"/>
    <springProperty scope="context" name="rabbitMqUsername" source="spring.rabbitmq.username" defaultValue="guest"/>
    <springProperty scope="context" name="rabbitMqPassword" source="spring.rabbitmq.password" defaultValue="guest"/>
    <appender name="AMQP" class="org.springframework.amqp.rabbit.logback.AmqpAppender">
        <host>${rabbitMqHost}</host>
        <port>${rabbitMqPort}</port>
        <username>${rabbitMqUsername}</username>
        <password>${rabbitMqPassword}</password>
        <applicationId>${appName}</applicationId>
        <contentType>application/log</contentType>
        <exchangeName>gc.log</exchangeName>
        <declareExchange>true</declareExchange>
        <deliveryMode>NON_PERSISTENT</deliveryMode>
        <charset>UTF-8</charset>
        <layout>
            <pattern>
                ${appName}
                %date{"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", UTC}
                %thread
                %level
                %logger{36}
                %message
            </pattern>
        </layout>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="AMQP"/>
    </root>
</configuration>

если я удаляю этот конфиг, все работает хорошо.
Итак, теперь вопрос в том, как настроить интервал восстановления фабрики соединений для AmqpAppender

1 Ответ

1 голос
/ 23 июня 2019

В настоящее время оно не отображается как свойство Boot, но вы можете установить recoveryInterval или recoveryBackOff на фабрике контейнеров слушателя кролика.

Просто получите ссылку на фабрику контейнеров в некотором классе конфигурации (или переопределите автоматически настроенную фабрику Boot по умолчанию) и задайте свойство.

например,

@Bean
public Object configure(SimpleRabbitListenerContainerFactory factory) {
    factory.setRecoveryInterval(10_000L);
    return null; // you can return null as long as you are on Boot 2.x.
}

Пожалуйста, откройте проблему улучшения загрузки GitHub, чтобы отобразить это как свойство.

РЕДАКТИРОВАТЬ

В исходном вопросе не упоминалось, что вы используете RabbitMQ только для регистрации. В будущем, пожалуйста, будьте более ясны в своих вопросах, чтобы получить более своевременный правильный ответ.

Приведенный выше ответ относится к @RabbitListener методам, пытающимся подключиться к брокеру.

Поскольку ведение журнала является событием «публикации», попытка подключения будет предприниматься при каждой попытке отправить журнал (и для повторных попыток), и, следовательно, вы получите этот журнал INFO.

Единственный способ подавить эти журналы - изменить уровень журнала для org.springframework.amqp.rabbit.connection.CachingConnectionFactory на WARN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...