【发布时间】:2016-01-28 15:30:03
【问题描述】:
我正在使用 Spring Boot 1.3.2 和 Spring AMQP(大部分是默认配置)来实现一组微服务之间的通信,我注意到每个微服务启动后的第一个“请求”需要一个“长时间”时间,因为它是创建与 RabbitMQ 的连接的时间。
有没有办法强制在早期(在启动阶段)创建连接,而不是在第一个“请求”时懒惰地创建?
【问题讨论】:
我正在使用 Spring Boot 1.3.2 和 Spring AMQP(大部分是默认配置)来实现一组微服务之间的通信,我注意到每个微服务启动后的第一个“请求”需要一个“长时间”时间,因为它是创建与 RabbitMQ 的连接的时间。
有没有办法强制在早期(在启动阶段)创建连接,而不是在第一个“请求”时懒惰地创建?
【问题讨论】:
如果您正在消费消息,那么侦听器容器将在启动时建立连接。
如果您只生成消息,那么您将看到您描述的行为。
解决它;创建一个实现SmartLifecycle的类; @Autowire连接工厂;在start() 方法中,执行this.connectionFactory.createConnection() 并将@Bean 添加到上下文中。
没有必要“关闭”连接(但不会造成伤害),它是用于所有通道的单个连接(默认情况下)。
【讨论】: