WEB开发网
开发学院软件开发Java 使用Mule ESB与Groovy编排RESTful服务 阅读

使用Mule ESB与Groovy编排RESTful服务

 2009-12-01 00:00:00 来源:WEB开发网   
核心提示: 这全是XML,我们来仔细分析一下:名为OrderCreationQueue的管道(可以是VM队列或是JMS队列)接收消息,使用Mule ESB与Groovy编排RESTful服务(3),接收到的消息被直接传递到另一个路由,该路由会将HTTP POST的结果发送到下一个服务,等待后面的服务从 Or

这全是XML,我们来仔细分析一下:

名为OrderCreationQueue的管道(可以是VM队列或是JMS队列)接收消息。

接收到的消息被直接传递到另一个路由,该路由会将HTTP POST的结果发送到下一个服务,该服务通过名为OrderCreationResultQueue(异步的VM队列)的管道对调用结果进行分析。

通过标准的输出端点在Groovy转换器上执行该HTTP POST请求:

请求订单的微格式是通过一个特定的传送器创建的,下一节将对其进行详细介绍。

通过一小段脚本将结果代码抽取出来并与期望值进行比对。进行比较的目的在于将后面的服务与纯的HTTP隔离开来:我们所创建的boolean类型的属性OrderPlaced是独立的,其名称与进行的编排密切相关。

类似的,在更具上下文含义的OrderResourceLocation名字下复制Location头。注意,该头 有可能丢失(在失败的情况下),在这种情况下,我们将其值默认设为空字符串以避免将null属性加到消息中。

我们使用了一个对象——字符串转换器来“分离”HTTP响应(以流的形式返回)。多亏有了这个转换器,流得到了完全的处理,其内容也通过使用与 HTTP交换相关的编码转换为字符串。当流关闭时,HTTP连接得到了释放;我们不想一直开着它,等待后面的服务从 OrderCreationResultQueue中拿出响应消息。

Groovy MarkupBuilder的好处

OrderMapToMicroformat转换器完成了服务中的重头戏,而它是由Groovy的MarkupBuilder实现的。MarkupBuilder API提供了一种自然的方式生成兼容于特定微格式的XML实体:

<scripting:transformer name="OrderMapToMicroformat"> 
  <scripting:script engine="groovy"> <![CDATA[ 
    def writer = new StringWriter() 
    def xml = new groovy.xml.MarkupBuilder(writer) 
    xml.order(xmlns: 'urn:acme:order:3:1') { 
     customerId(payload.clientId) 
     productId(payload.productCode) 
     quantity(payload.quantity) 
    } 
    result = writer.toString() ]]> 
  </scripting:script> 
</scripting:transformer> 

上一页  1 2 3 4 5 6  下一页

Tags:使用 Mule ESB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接