實作思路:在定時任務中引入rabbitmq的模塊,rabbitmq模塊添加對應的訊息監聽,在定時任務模塊使用cron的方式配置定時任務,
新建模塊service_task,添加依賴,引入之前創建的mq工具類模塊
<dependencies>
<dependency>
<groupId>com.lzq</groupId>
<artifactId>rabbit_util</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
組態檔
# 服務埠
server.port=8208
# 服務名
spring.application.name=service-task
# 環境設定:dev、test、prod
spring.profiles.active=dev
# nacos服務地址
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8888
#rabbitmq地址
spring.rabbitmq.host=192.168.8.139
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
創建啟動類
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableDiscoveryClient
public class ServiceTaskApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceTaskApplication.class, args);
}
}
在rabbit-util模塊MqConst類添加
//定時任務
public static final String EXCHANGE_DIRECT_TASK = "exchange.direct.task";
public static final String ROUTING_TASK_8 = "task.8";
//佇列
public static final String QUEUE_TASK_8 = "queue.task.8";
Task模塊對應類
@Component
@EnableScheduling
public class ScheduledTask {
@Autowired
private RabbitService rabbitService;
/**
* cron運算式設定規則
* 每天8點執行 提醒就診
*/
@Scheduled(cron = "0 0 8 * * ?") //每天8點
// @Scheduled(cron = "0/10 * * * * ?")
public void task1() {
System.out.println(new Date().toLocaleString());
//發送短信
rabbitService.sendMessage(MqConst.EXCHANGE_DIRECT_TASK, MqConst.ROUTING_TASK_8,"");
}
}
添加mq監聽
@Component
public class OrderReceiver {
@Autowired
private OrderInfoService orderService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value = MqConst.QUEUE_TASK_8, durable = "true"),
exchange = @Exchange(value = MqConst.EXCHANGE_DIRECT_TASK),
key = {MqConst.ROUTING_TASK_8}
))
public void patientTips(Message message, Channel channel) throws IOException {
orderService.patientTips();
}
}
OrderService介面和實作
@Override
public void patientTips() {
//查詢當天就診人手機號
QueryWrapper<OrderInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("reserve_date", new DateTime().toString("yyyy-MM-dd"));
//未取消預約的訂單
queryWrapper.ne("order_status",-1);
List<OrderInfo> orderInfoList = baseMapper.selectList(queryWrapper);
for (OrderInfo orderInfo : orderInfoList) {
//短信提示
MsmVo msmVo = new MsmVo();
msmVo.setPhone(orderInfo.getPatientPhone());
rabbitService.sendMessage(MqConst.EXCHANGE_DIRECT_TASK, MqConst.ROUTING_TASK_8,msmVo);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423275.html
標籤:其他
