首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧引导兔比特连接重试配置

弹簧引导兔比特连接重试配置
EN

Stack Overflow用户
提问于 2019-06-22 16:51:02
回答 1查看 1.8K关注 0票数 0

我有与rabbitmq的spring引导云微服务,我使用docker-组合来启动所有的容器。Rabbitmq需要一些时间来启动,在它完成启动之前,我看到了很多连接尝试:

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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配置连接工厂恢复间隔。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-22 21:04:16

它目前没有作为Boot属性公开,但是您可以在兔子侦听器容器工厂上设置recoveryIntervalrecoveryBackOff

只需在某些配置类中获取对容器工厂的引用(或覆盖Boot的默认自动配置工厂)并设置属性。

例如:

代码语言:javascript
复制
@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方法。

因为日志记录是一个“发布”事件,所以每次尝试发送日志(以及重试)时都会尝试连接,因此您将得到该信息日志。

抑制这些日志的唯一方法是更改日志级别,以便org.springframework.amqp.rabbit.connection.CachingConnectionFactory发出警告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56717363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档