首先,我们先准备一下环境,先在console下运行:
karaf@root>log:clear
这个命令是将缓存中的日志清空。还有两个相关的命令:
log:display 显示最近的一些日志
log:tail 持续显示日志输出(对照一下linux/unix中的tail命令比较容易理解)
现在在camelContext下再加个route:
在console下输入log:tail,应该看到没有输出或者输出一部分信息后,就没信息输出了,这时,我们要输入ctrl+c退出log:tail。
我们再用console命令:
karaf@root>feature:install camel-quartz
安装camel-quartz component,相信大家都知道quartz是什么了吧,不懂的,就去google一下。
然后,继续在camelContext下加多一个route:
我们再次输入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进入时,就会由
在上面的例子中,我们可以看到“direct:abcd"就像一个标号一样,当有NM传递给它时,它并不处理,而是交到到由另一个有相同名字的direct endpoint为源的route那里处理。这里我表达得不好,大家自己体会一下。
最后,我们引入activemq的component,activemq是一个jms实现,也就是一个消息中间件,activemq component就是处理来自activemq的消息的组件。
log:tail的输出如下:

除了以前的mylog:Message外,这次多了个内容为“Exchange[....."的日志。
列举了以上几个例子,相信大家对ServiceMix的运作机制有了大致的认识了吧。
下节,我们举个可加入自定义业务逻辑的Bean Component的例子给大家参考。