文档章节

Mule的基本配置元素:Endpoint、Transformer、Filter、Flow

猪刚烈
 猪刚烈
发布于 2014/10/12 11:40
字数 703
阅读 44
收藏 0
点赞 0
评论 0

1.Endpoint


Mule的endpoint和WS中的endpoint是非常类似的,它是消息进出(读写)的入口,不同的是mule的endpoint可以基于各种不同的传输协议。
mule的endpoint分成两类:
  •     global endpoint:全局的endpoint,一个flow或service的inbound或outbound endpoint可以通过ref属性引用这些endpoint.
  •      low或service内的inbound或outbound endpoint,这类endpoint仅限于flow或service内,可以认为是一种局部endpoint.
每一个endpoint都必须指明它的传输协议是什么,或者说它是什么传输类型的endpoint,指定方式有两种:
  •      在<endpoint/>元素上追加传输协议前缀:
<http:endpoint name="in" host="localhost" port="8080" path = "services/orders" user="${user.name}" password ="${user.password}"/>

  •     通过<endpoint/>元素的address属性指定:
<endpoint addres="http://${user.name}:${user.password}@localhost:8080/services/orders/>

刚开始接触mule时对inbound和outbound的endpoint可能一时不太好区分,实际上所谓的in和out都是以mule的视角来定位的,inbound指的是外部message“流入”mule的断点,也就是mule暴露给外部应用可以访问的端点,同理,outbound就是message从mule向外“流出”的端点,也就是一个可以访问的外部应用的端点。比如一种最典型也是最普遍的WS代理配置,也就是将不同物理地址的WS统一挂接到ESB,由ESB以一致的地址发布,如:

<pattern:web-service-proxy name="weather-forecast-ws-proxy"
	inboundAddress="http://localhost:8090/weather-forecast"
	outboundAddress="http://server1:6090/weather-forecast"
	wsdlLocation="http://server1:6090/weather-forecast?wsdl" />

在这段配置中,ESB把原物理地址为:http://server1:6090/weather-forecast 的服务经过包裹,以新的地址http://localhost:8090/weather-forecast 发布出去。作为inboundAddress,http://localhost:8090/weather-forecast是ESB对外“开放”或“发布”的端点,也就是消息流入ESB的端点。outboundAddress则是ESB路由的目的地,其往往是某个现存系统的访问入口。


2.Transformer


Transformer是负责消息传输过程中的数据转换,如从JSON对象到一个Java对象的转换:

<json:json-to-object-transformer name="jsonToFruitCollection" returnClass="org.mule.module.json.transformers.FruitCollection">
<json:deserialization-mixin mixinClass="org.mule.module.json.transformers.OrangeMixin" targetClass="org.mule.tck.testmodels.fruit.Orange"/>
</json:json-to-object-transformer>

3.Filter


Filter是用于配置是否要对消息进行过滤的配置项,除像wildcard-filter这样的基本Filter,Mule还有功能强大的逻辑Filter用于进行过滤条件的组合。

<or-filter>
	<wildcard-filter pattern="*priority:1*"/>
	<and-filter>
		<not-filter>
			<wildcard-filter pattern="*region:Canada*"/>
		</not-filter>
		<wildcard-filter pattern="*priority:2*"/>
	</and-filter>
</or-filter>

4.Flow


Flow是mule的最基本处理单元。它从一个inbound endpoint开始,对message进行了一系列的处理,然后从outbound endpoint输出。这期间会flow会使用到上述提及的多种组件参与处理,如transformer、filter等等,而且还可能调用java或其他语言实现的组件进行处理,应该说在应用集成里,flow所要实现的,正是所谓的“集成逻辑”。

© 著作权归作者所有

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
mule studio基础了解

前一段一直在学习mule,了解一些发现这方面资源网上较少所以把自己所学的与大家分享,我主要是看mule的官网学习知识,我会持续更新这一专题的,希望能帮助到想入门的。 Mule studio 了解概况...

-悟空- ⋅ 2013/11/04 ⋅ 5

Mule ESB 学习笔记(2)

Mule ESB中有一些基本的概念,理解这些基本概念后才能理解Mule的内部机制。从中也可以看到Mule解决问题的基本思路。 4. 基本概念 4.1 Model Model表示托管各个服务的运行时环境。 图 Model ...

丽天 ⋅ 2010/12/06 ⋅ 1

Mule ESB 学习笔记(8)

写之前的内容时,Mule刚刚3.0.1版本,很多官方文档还没有更新(尤其示例代码),维持在V2的状态。经过了一年多的时间,Mule社区版发展至了3.2版本,并且推出了Mule Studio可视化开发工具(当...

丽天 ⋅ 2012/02/07 ⋅ 3

mule 传递参数给webservice

@huangweibing 你好,想跟你请教个问题: 我看了你的mule传递参数给cxf的webservice.为什么我一个参数也报错?? local part cannot be "null" when creating a QName. Failed to route eve...

北京小天 ⋅ 2014/03/12 ⋅ 3

Mule ESB File Connector轮询单个文件的实现(3)

本系列的(1)和(2)介绍了如何修改File Connector的轮询机制,使得File Connector每次轮询只轮询一个文件。本文主要阐述如何对前面的实现做进一步的修改,这个修改有以下两点: 1)如何自定义定义...

杨延庆 ⋅ 2016/08/08 ⋅ 2

Mule ESB 学习笔记(7)

配置模式 Mule 3.0版本提供了“pattern”的机制。Pattern总结了实际使用过程中的常见场景,以简化的服务配置方式提供。 6.1 简单服务模式(simple service pattern) 简单服务模式用于简化同...

丽天 ⋅ 2010/12/28 ⋅ 1

mule 工程在linux上部署问题,找不到mule-data-mapper.xsd?

我用mule 3.5 studio创建了mule工程,在studio中用Run As Mule Application的方式运行是可以的, 但是当我把工程打包成zip放到/usr/local/mule-standalone-3.5.0/apps去运行,就会报错,jav...

wobushiwangj ⋅ 2015/03/10 ⋅ 2

Mule ESB中entry-point-resolver的使用(8) Custom Entry Point Resolver

前面介绍了6种Mule ESB提供的Entry Point Resolver,如果在实际应用中觉得这些Entry Point Resolver不能满足实际需要,可以自定义Entry Point Resolver。自定义的Entry Point Resolver类必须...

杨延庆 ⋅ 2016/08/16 ⋅ 0

Mule ESB中entry-point-resolver的使用(1) 总论

前面介绍Mule ESB使用的系列文章中我们使用了自定义的Java Transformer和Java Component,用于接收和处理Mule Message。然而我们使用的Transformer和Component都必须实现AbstractTransformer...

杨延庆 ⋅ 2016/08/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 30分钟前 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 47分钟前 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 9

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部