Camel笔记:Camel定时传送数据
2021-05-16 本文已影响0人
阿乐_822e
本文接上往篇:Camel笔记(从Mysql到本地文件与Kafka队列) - 简书 (jianshu.com)
在上篇,已经实现了通过页面请求将Mysql数据发送到本地目录和kafka队列,但对于实时数据,有时候有同步要求,这就要求我们以一定的频率源源不断地将源数据传送到目的地,也就是要用到定时任务。
定时任务我们采用camel-quartz2组件。我们在上篇的基础上,再添加一个定时任务。
1)准备工作
首先要修改poem文件,添加camel-quartz2依赖
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-quartz2-starter</artifactId>
<version>2.22.1</version>
<scope>compile</scope>
</dependency>
这里要注意一下,上篇我们使用的camel系列组件版本是2.17.0,由于quartz2至少需要2.2以上版本,所以要将所有camel系列组件版本都调整为2.22.1
2)修改EmployeeServiceImpl服务类,添加定时器,在这个定时器里调用前面的"direct:write"这个端点,每5秒钟执行一次
//定时任务触发
from("quartz2:translate?cron=0/5 * * * * ?&job.name=write&stateful=true")
.log("Start to translate.... ")
.to("direct:write");
3)重启程序,查看输出
2021-05-16 00:38:52.161 INFO 8344 --- [ main] com.javainuse.SpringBootJdbcApplication : Started SpringBootJdbcApplication in 11.138 seconds (JVM running for 14.399)
2021-05-16 00:38:55.027 INFO 8344 --- [amel-1_Worker-1] route4 : Start to translate....
[{empId=888, empName=Jack}, {empId=cmp001, empName=Jack}]
2021-05-16 00:39:00.004 INFO 8344 --- [amel-1_Worker-2] route4 : Start to translate....
[{empId=888, empName=Jack}, {empId=cmp001, empName=Jack}]
2021-05-16 00:39:05.002 INFO 8344 --- [amel-1_Worker-3] route4 : Start to translate....
[{empId=888, empName=Jack}, {empId=cmp001, empName=Jack}]
2021-05-16 00:39:10.002 INFO 8344 --- [amel-1_Worker-4] route4 : Start to translate....
[{empId=888, empName=Jack}, {empId=cmp001, empName=Jack}]
2021-05-16 00:39:15.003 INFO 8344 --- [amel-1_Worker-5] route4 : Start to translate....
[{empId=888, empName=Jack}, {empId=cmp001, empName=Jack}]
...
可以看到,定时任务正常运行了,每5秒一次