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> {
@Resource
public RedisTemplate redisTemplate;
@Override
public void onApplicationEvent(ChannelMsgEvent event) {
List<TDeviceRealdataDTO> tDeviceRealdataDTOList = event.getDatas();
//可以对监听到的数据进行操作
}
}
3.通过ApplicationContext将数据丢给监听器
@Slf4j
public class RainfallDataSyncTask implements SimpleJob {
@Autowired
private ApplicationContext context;
@Override
public void execute(ShardingContext shardingContext) {
List<TDeviceRealdataDTO> dtos = getData(array);
if (CollUtil.isNotEmpty(dtos)) {
//丢出数据
context.publishEvent(new ChannelMsgEvent(this, dtos));
} else {
log.info("查询数据为空");
}
}
}