2021-08-10 更新
之前的用法需要在每次发布后都执行一次任务,也没有非常方便;所以在下文的基础上又进行了一次改进,达到一次启动,“终生启动”的效果。
1. 升级QueueConsumerStarterJob
@Component
@Slf4j
public class QueueConsumerStarterJob {
@Autowired
private RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry;
private boolean isStarted = false;
@XxlJob("AmqpConsumerJobHandler")
public void amqpConsumerJobHandler() throws Exception {
if (!isStarted) {
synchronized (this) {
if (!isStarted) {
log.info("开始amqp消费启动队列");
rabbitListenerEndpointRegistry.start();
isStarted = true;
} else {
log.debug("消费已启动,不重复启");
}
}
} else {
log.debug("消费已启动,不重复启");
}
}
public void setStarted(boolean started) {
isStarted = started;
}
}
可以看到在之前的基础上添加了一个启动标识isStarted,可以推测出amqpConsumerJobHandler会被多次调用。
2. 更新xxl-job配置
2.1 执行器管理
将注册方式变更为手动,然后只保留队列机的机器地址(可能是多个);

2.2 任务管理
将任务的调度类型设置为

本文介绍了如何使用Xxl-Job在Spring Boot应用中管理和调度RabbitMQ消费者。通过升级QueueConsumerStarterJob,更新Xxl-Job配置,手动注册执行器并设置任务调度类型为cron,实现了消费者在队列机上的自动启动和管理。同时,文章探讨了在分布式环境中的消费者启动控制,并提供了相关的代码实现和配置细节。
最低0.47元/天 解锁文章
291

被折叠的 条评论
为什么被折叠?



