和Apache Camel集成
Apache Camel 是一个路由和处理消息的工具,带有在这 描述的企业集成模式的工具。
Moqui框架有一个Message Endpoint给Camel(MoquiServiceEndpoint),将Camel绑定到Service Facade。这允许服务(用type=camel)用MoquiServiceConsumer把服务调用作为消息发送给Camel。此endpoint也包括一个消息生产者(MoquiServiceProducer)在Camel路由字符串中作为moquiservice可用。
这是来自ExampleServices.xml文件的一些Camel服务例子:
<service verb="localCamelExample" type="camel"
location="moquiservice:org.moqui.example.ExampleServices.targetCamelExample">
<in-parameters><parameter name="testInput"/></in-parameters>
<out-parameters><parameter name="testOutput"/></out-parameters>
</service>
<service verb="targetCamelExample">
<in-parameters><parameter name="testInput"/></in-parameters>
<out-parameters><parameter name="testOutput"/></out-parameters>
<actions>
<set field="testOutput" value="Here's the input: ${testInput}"/>
<log level="warn"
message="targetCamelExample testOutput: ${result.testOutput}"/>
</actions>
</service>
当你调用localCamelExample服务时,它通过Apache Camel调用targetCamelExample。这是一个非常简单的使用服务和Camel的例子。关于用Camel可以做的许多事情,组件参考是个非常好的地方。
一般的想法是你可以:
- 从种类繁多的源(文件轮询、收到的HTTP请求、JMS消息和许多其他的)获取消息数据
- 转换消息(支持的格式包括XML、CSV、JSON、EDI等)
- 运行自定义表达式(甚至是Groovy)
- 分拆、合并、路由、过滤、装饰或应用任何其他的EIP工具
- 发送消息到端点
Camel是一个非常灵活和功能丰富的工具,所以这里不再冗述,推荐这些书:
- Bilgin Ibryam 的 《Instant Apache Camel Message Routing》 :这是一本快速介绍,将让你迅速获取很多很酷的camel的工具材料
- Scott Cranton 和 Jakub Korab 的 《Apache Camel Developer's Cookbook》 : 有上百个关于使用Camel的提示和例子
- Claus Ibsen 和 Jonathan Anstey 的 《Camel in Action》 :关于Apache Camel的经典数据。覆盖了一般的概念,各种内部细节,如何应用不同的EIP,和许多组件的总结。此书的网站页有大量有用的在线资源的链接。