项目中会遇到,MQ队列的监听是在某一前提条件准备好的情况下才启动,比如MQ接收到一系列数据,这些数据的保存依赖于另外一个MQ消息的一些配置接收之后才能完成。

指定属性autoStartup为false,并启动对应的listener id

@RabbitHandler
@RabbitListener(queues = "Message", autoStartup= "false", id = "Message")
public void process(String body) {

}

根据listener ID获取对应容器,进行设置 stop/start

@Resource
private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;

MessageListenerContainer container = rabbitListenerEndpointRegistry.getListenerContainer("Message");
if(!container.isRunning()){
   container.start();
   log.info("started container");
}
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐