使用Mule ESB与Groovy编排RESTful服务

在过去几年中,REST风格的软件架构获得了越来越多的认可,这主要是因为它减少了系统对动件的需求、同时使系统耦合性更低,弹性更好。

目前越来越多的REST资源出现在企业应用中,因此对这些资源进行编排就显得非常重要了。比方说,典型的业务活动就包含了资源的创建,然后是资源的查找及其他资源的创建等。

本质上来说,与RESTful服务的交互是相当简单的:需要构造并发送适当的请求(请求头和请求体),然后分析返回的响应(响应头和响应体)。完成这个处理并不需要什么特别的工具或是框架,只要有一个好用的HTTP客户端程序库就足够了。除此之外,由于RESTful交互过程中所涉及到的不同实体是由所谓的微格式定义的,因此能够轻松解析或是输出这些实体的能力就显得非常重要了。

编排与多个资源的交互是个棘手的问题。我们需要定义编排、处理错误并不断尝试,同时系统必须能够在压力下表现良好。作为一个集成框架,Mule提供了我们所需的一切。

来考虑一个例子吧,某商业系统对新订单的处理需要如下编排:

通过向服务发送一个XML实体来创建一个新订单。

寻找新创建的订单资源并从中提取出确认信息。

根据确认信息并通过邮件网关向客户发送一条确认消息。

我们将在本文详细分析上面每一步的交互过程,同时还会介绍为了获得上述交互所需的Mule动件和Groovy特性。

总体的编排包含了一系列通过特定路由、过滤器以及内存消息队列(aka VM队列)连接起来的Mule服务。 最近InfoQ上的这篇文章介绍了Mule中的消息路由,大家不妨移步一观。

Mule对REST的支持

Mule提供了一种简单而又强大的方式与RESfFul服务交互,那就是Mule RESTPack。

Mule RESTPack提供了一整套连接器与完整的指南以帮助用户创建新的RESTful应用。在本文撰写之际,该软件包提供了三种传送器,分别基于三种流行的REST框架:Abdera、Jersey及Restlet。这样我们就可以轻松公开新的资源,但如何集成现有的REST资源呢?

好消息是Mule标准的脚本模块所提供的Groovy支持有助于Mule HTTP传送器的使用,这样我们就可以成功与RESTful服务交互了。 向Mule发送POST请求

首先来看看第一个交互。HTTP向特定的资源发送一个XML实体来创建订单,如以下程序片段所示:

POST /orders HTTP 1.1
...
<order xmlns='urn:acme:order:3:1'>
   <customerId>123456</customerId>
   <productId>P987C</productId>
   <quantity>2</quantity>
</order>

如果成功服务器的响应如下:

201 Created
Location: http://acme.com/order/O13579
...
<order id='O13579' />

时间: 2025-01-20 19:14:03

使用Mule ESB与Groovy编排RESTful服务的相关文章

Mule ESB 3.3与CloudHub

MuleSoft最近发布了企业服务总线(ESB)产品Mule ESB 3.3.在新版本中,除了应用程序集成之外,Mule ESB还拥有了数据集成功能:从而为开发者提供了一个面向本地或云端应用的集成解决方案. Mule ESB 3.3提供了集成本地应用.SaaS和定制软件的套件:这些功能都可以在新的Mule Studio中找到.Mule ESB 3.3有两个分支:企业版和开源社区版.Mule ESB 3.3企业版包含了一系列相关组件,比如DataMapper, CloudHub和Cloud Con

MULE ESB中的一些值得关注的地方

Mule框架提供了一个可升级的环境,可以把自己的业务组件部署在里面.Mule管理所有组件之间的交互,不管它们是在同一个虚拟机中还是在internet上,也不管底层使用的传输方式. Mule围绕着企业服务总线(ESB)架构进行设计,保证了不同的组件或者应用可以通过公共的消息总线进行交互,公共的消息总线一般是由JMS或者其他消息服务器来实现. 它的主要特点有:    1.基于J2EE1.4的企业消息总线(ESB)和消息代理(broker).    2.可插入的连接性:比如Jms,jdbc,tcp,u

关于MULE ESB相关的介绍

1. 简介 Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换.Mule ESB支持集成现有系统而无论其底层采用何种技术,如JMS.Web Services.JDBC.HTTP以及其他技术. 2. 整体结构 图 整体结构 从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由).Transaction Management(事务管理).Transformation(

一步一步学Mule ESB——(第一篇:基础篇)

mule 它是一个以Java为核心的轻量级的消息框架和整合平台,基于EIP(Enterprise Integeration Patterns,由Hohpe和Woolf编写的一本书)而实现的.Mule的核心组件是UMO(Universal Message Objects,从Mule2.0开始UMO这一概念已经被组件Componse所代替),UMO实现整合逻辑.UMO可以是POJO,JavaBean 等等.它支持30多种传输协议(file,FTP,UDP,TCP,email,HTTP,SOAP,JM

MULE ESB中custom,flows,connectors等的使用方法

1. how to work     当你去检查一个消息在mule esb当中 是如何流动的时候,你回发现整个架构中存在着三个层面:应用层,整合层,以及传输层..     同样,在mule 开发中也有三种不同类型任务你需要去做:            (1)  服务组件开发 可以是存在的pojo,cloud connectors ,或者是包含业务逻辑的和消费,处理消息的sping bean            (2)  服务协调,通过配置各种 服务调停和协调必须得组件 去允许松耦合的组件去使用

MULE ESB环境搭建和例子(通过装插件的方式)

环境搭建和例子: Download mule standaloe from web site: 1.    http://www.mulesoft.org/download-mule-esb-community-edition 2.    Unzip to a path(such as: D:\mulesl312)   Installing Mule IDE in Eclipse 3.    Start Eclipse, and set up a workspace foryour instal

结合Dojo和JAX-RS创建RESTful服务

在客户端和服务器端的简易实现 最新版本的 IBM WebSphere Application Server Feature Pack for Web 2.0,为您创建 Ajax 样式架构提供一个端到端的解决方案.在客户端,功能部件包提供开源 Dojo JavaScript 工具箱.在最新版的功能部件包中 JAX-RS (基于 Apache Wink 项目)提供服务器端库,可用来实现连接 Dojo 的 RESTful 服务. 除了广泛的用户界面小部件外,Dojo 还提供了丰富的数据服务 API,可

用Jersey构建RESTful服务9--Jersey+SQLServer+Hibernate4.3+Spring3.2+AngularJS

一.总体说明 本例运行演示了用 Jersey 构建 RESTful 服务中,如何集成 angular,用MVC分层的方式访问 RESTful 服务. 二.环境 1.上上文的项目 Demo7) 2.angular 库 ,本例为1.2.3 版本 3.样式 bootstrap-3.1.1.min.js 三.配置 1.完成项目结构  创建相应的目录结构 angularjs .bootstrap 的js,css文件放别放入相应的目录, 在js目录下再创建 app.js .controller.js 在pa

anypoint studio-最近在看mule esb,求指导

问题描述 最近在看mule esb,求指导 刚开始看mule esb,官网上下载的确实anypoint studio,大神给解答解答mule studio和anypoint studio是同样的东西吗?不是的话求给个mule studio的下载链接以及相关文档,感激不尽! 解决方案 anypoint studio是mule studio的升级版 解决方案二: anypoint studio 是最新的名字 ,以前的名字不用了!mule studio 是以前的名字 ,anypoint studio可