Apache ServiceMix入门之四
上节,我们尝试了camel-ftp component和file component组成的2个路由,可以看到两个路由间接地通过“file:c:/inbox"这个endpoint,达到下载文件,然后再将文件移到另一文件夹的效果。下面,我们再来看几个其它Component的例子:
首先,我们先准备一下环境,先在console下运行:
在console下输入log:tail,应该看到没有输出或者输出一部分信息后,就没信息输出了,这时,我们要输入ctrl+c退出log:tail。
我们再用console命令:
我们再次输入log:tail,就可以看到类似以下的输出:
每10秒钟就会输出一行包含“mylog:Message”的日志信息。
这是以上两个route合作产生的效果:
下面那个route的endpoint("quartz:mytimer?cron=0/10+*+*+*+*+?")每隔10秒产生一条Normal Message(NM),传递到endpoint("direct:abcd"), 然后,上面那个route的endpoint("direct:abcd")当有NM进入时,就会由<log message="xxxx">产生一条日志,所以我们就会每隔10秒就看到一条日志被输出。
在上面的例子中,我们可以看到“direct:abcd"就像一个标号一样,当有NM传递给它时,它并不处理,而是交到到由另一个有相同名字的direct endpoint为源的route那里处理。这里我表达得不好,大家自己体会一下。
最后,我们引入activemq的component,activemq是一个jms实现,也就是一个消息中间件,activemq component就是处理来自activemq的消息的组件。
log:tail的输出如下:
除了以前的mylog:Message外,这次多了个内容为“Exchange[....."的日志。
<to uri="activemq:queue:q1"/>就是将NM转成ActiveMQ的消息,发到ActiveMQ的队列q1里。
<from uri="activemq:queue:q1"/>从ActiveMQ的队列q1里获取消息,并转成NM,传递给endpoint("log:q1logmessage")。
列举了以上几个例子,相信大家对ServiceMix的运作机制有了大致的认识了吧。
下节,我们举个可加入自定义业务逻辑的Bean Component的例子给大家参考。