1.建立监听的类 继承ApplicationEvent
public class ChannelMsgEvent extends ApplicationEvent {private List<TDeviceRealdataDTO> datas;public ChannelMsgEvent(Object source, List<TDeviceRealdataDTO> datas) {super(source);this.datas = datas;}public List<TDeviceRealdataDTO> getDatas() {return datas;}public void setDatas(List<TDeviceRealdataDTO> datas) {this.datas = datas;}
}
2.建立监听器
@Component
@Slf4j
public class WaterloggingListener implements ApplicationListener<ChannelMsgEvent> {@Resourcepublic RedisTemplate redisTemplate;@Overridepublic void onApplicationEvent(ChannelMsgEvent event) {List<TDeviceRealdataDTO> tDeviceRealdataDTOList = event.getDatas();//可以对监听到的数据进行操作}}
3.通过ApplicationContext将数据丢给监听器
@Slf4j
public class RainfallDataSyncTask implements SimpleJob {@Autowiredprivate ApplicationContext context;@Overridepublic void execute(ShardingContext shardingContext) { List<TDeviceRealdataDTO> dtos = getData(array);if (CollUtil.isNotEmpty(dtos)) {//丢出数据context.publishEvent(new ChannelMsgEvent(this, dtos));} else {log.info("查询数据为空");}}}