使用Mule ESB与Groovy编排RESTful服务
2009-12-01 00:00:00 来源:WEB开发网注意map payload中的值是如何用于组装XML元素的:这里解决了一些不匹配的命名约定(比如将clientId转换为customerId)。
如你所期望的那样,该转换器产生了如下输入:
<order xmlns='urn:acme:order:3:1'>
<customerId>123456</customerId>
<productId>P987C</productId>
<quantity>2</quantity>
</order>
除了正确的内容类型外都是订单的RESTful服务用于创建新资源所需的内容。
分析
现在我们来看一下负责异步分析订单创建结果并决定是否需要进一步进行编排的服务:
<service name="OrderCreationResultProcessor">
<inbound>
<inbound-endpoint ref="OrderCreationResultQueue" />
<selective-consumer-router>
<message-property-filter pattern="OrderPlaced=true" />
</selective-consumer-router>
<logging-catch-all-strategy />
</inbound>
<outbound>
<pass-through-router>
<outbound-endpoint ref="SuccessfulOrderQueue" />
</pass-through-router>
</outbound>
</service>
我们使用的选择性消费者(selective consumer)所接收的消息中一定要包含订单成功处理的头信息。如果该头信息为true,那就通过一个名为SuccessfulOrderQueue 的内存队列将该消息路由给第三个(也是最终的)服务,该服务会处理订单成功创建的消息。注意在这个例子中我们只是简单地将错误消息以日志的方式记录下来,但在实际应用中需要将错误消息发送给专门的队列以进行后续的分析或是及时的反馈。
更多精彩
赞助商链接