在本章我们介绍在serviceMIx 中图和使用 ActiveMQ、features命令,入门的3篇文章来自
http://servicemix.apache.org/docs/5.0.x/quickstart/index.html,有兴趣的可以再去看看英文的。
ActiveMQ
每个Apache ServiceMix的实例是一个嵌入式activemq jms代理,这样可以很方便的在同一台机器上使用持久消息来通信,
但是它也支持集群和负载均衡。
在这个实例中,我们依然像上个例子一样,在2个目录中移动文件,把记录日志的部分改为发送一条jms消息到消息队列,
然后再创建一个新的route来接受事件并记录日志:
?xml version="1.0" encoding="UTF-8"?>
<blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="file:activemq/input"/>
<to uri="file:activemq/output"/>
<setBody>
<simple>
FileMovedEvent(file: ${file:name}, timestamp: ${date:now:hh:MM:ss.SSS})
</simple>
</setBody>
<to uri="activemq://events" />
</route>
</camelContext>
</blueprint>
保存这个文件,并且放到serviceMix的deploy目录,会看到复制到 activemq/input 目录中的文件被复制到 activemq/output
接受消息
在第一个文件中,除了复制文件,你看不到任何的log记录。它发送了jms消息,但是没有接受者,我们可以创建一个route来接受消息:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.osgi.org/xmlns/blueprint/v1.0.0
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from uri="activemq://events"/>
<to uri="log:events"/>
</route>
</camelContext>
</blueprint>
你可以通过log:display来查看日志消息。你可以通过osgi:start 和 osgi:stop来启动和关闭这个bundle.当你重启完第一个bundle后,你收到所有文件移动后发出
的消息事件。
features命令
karaf@root> features:list | grep camel
[uninstalled] [5.4.0 ] examples-activiti-camel servicemix-examples-5.4.0
[uninstalled] [5.4.0 ] examples-akka-camel servicemix-examples-5.4.0
karaf@root> features:install webconsolekaraf@root> features:list | grep webconsole
[installed ] [2.4.1 ] webconsole karaf-2
.4.1 Karaf WebConsole for administration and monitoring
通过features:install webconsole可以安装 webconsole bundle,成功后你可以通过 http://localhost:8181/system/console 用户名密码:smx/smx来
登录,可以通过浏览器来上传、启动,停止bundle。