Mule1.3.3容器

1 总览

 

 

1.1 消息进站处理流程
当Endpointer接收到的数据时,消息进站处理流程就开始了。endpointer负责接收消息,并且包装成mule格式消息。Inbound router根据消息自带的路由规则,对消息进行排序,批处理,幂等(判断消息是否重复)等处理,判定消息的真正目的地。
mule格式消息:
Ÿ       接收到数据
Ÿ       元数据,比如使用ftp传输时的文件名称
Ÿ       消息头,比如http传输协议的http协议头,或者jms消息头,为的是在mulemessage对象中可以获取到这些信息
Ÿ       附件,如果传输支持携带附件(如简单邮件协议),将附件加到mule消息的附件
1.1.1 Endpointer
工作在传输层,负责接收消息。Endpointer是可配置的,向下配置以哪种协议接收数据,向上配置怎样在mule消息与原始数据间转换。具体可以配置地址信息,传输协议信息,事务处理以及滤镜。
使用xml配置,一种配置对应一种传输。具体的传输实体(编码部分)可以利用mule提供的虚拟类接口来填充实现。(对于公认的可以实现使用已经实现好的)
1.1.2 Inbound router
负责控制进站的事件、消息,对它们进行组合,排序,过滤等操作。比如幂等处理会将所有已经接收过的消息全部都丢弃。关联排序操作,将消息按照分发顺序排序后交给组件处理。
使用xml配置,可以直接按照mule的默认配置,使用的现成的处理方法,但是也有情况会不得不自行配置,比如做消息组合等。因为做组合排序时,会使用用户的处理逻辑。
1.2 业务组件工作流程
当消息顺利进站并且完成从传输数据到mule消息的转换后,业务组件处理流程开始了。这个部分的开始真正对应着mule mode(service container)的工作。这个部分,消息将被传递给真正的业务组件,但是在此之前,会经过interceptor消息截获,与inbound transform。
1.2.1 Interceptor(预先)
负责截获流向组件的消息,用于监视,触发事件,截断消息等,比如“审查截获”负责核对每条消息的认证,是否有权限调用组件。
采用xml配置,配置采用什么截获处理方式,比如配置“审查截获”。当用户有新的截获处理需要加入时,而mule没有提供现成的,可以通过mule提供的接口继承开发(org.mule.umo.UMOInterceptor)。
1.2.2 Interceptor(之后)
如果截获处理配置的是“信封截获”(继承于org.mule.interceptors.EnvelopeInterceptor),当组件处理完成时,其中的 “after()”函数可以帮助用户钩挂回调处理。
采用xml配置,配置组件处理完成后,采用什么截获处理方式,比如配置“信封截获”。当用户有新的截获处理需要加入时,而mule没有提供现成的,可以通过mule提供的接口继承开发(org.mule.interceptors.EnvelopeInterceptor,在after()编写所有的处理逻辑)。
1.2.3 Inbound transformer
负责将传输层送来的数据转换成为组件真正需要的数据格式。它们可以联合起来去做某一类转换,这种转换是针对应用层的数据格式,即从一种应用格式到另一种。当执行复杂转换的时候,比如访问数据源,做数据查询与收集时,最好用组件去完成,而不是使用单个的转换对象去做。
配置具体的转换方法。Mule提供了基于xml数据的xslt的转换处理以及java的类型转换。传输层需要提供将应用数据转换to/from传输数据的转换处理方法。如果用户需要自己编写处理转换,可以利用mule提供的接口继承开发。
1.2.4 Service invocation
实例化业务组件,调用执行。业务组件不是必须在mule mode中被存储实例,可以在其他的容器中进行。容器可置换。
组件实体必须用户自己编写,组件的编写与mule无必然联系,因为mule通过jvm采用参数类型匹配的方式来完成匹配、调用,但是如果组件是可能并发执行的话,组件必须编写为无状态的,或者使用静态变量来维护其状态。
1.3 消息出站处理流程
如果有处理结果需要分发,或者配置有出站路由,则开始消息出站处理流程,否则忽略。
1.3.1 Outbound router
负责路由处理结果的去处。mule提供了很多esb中提到的路由方法的标准实现。
1.3.2 Outbound transformer
将结果转换成各种协议的buffer,交由相应的endpointer准备分发。比如rel-》soap-》http
1.3.3 Endpointer(outbound)
可能会有多个endpointer分发针对不同的传输协议。
1.4 工程开发流程
建立工程,添加源文件,基本上有转换处理的,业务处理的,
转换处理开发继承 class DoTransform(class ),而业务处理的参数与转换的输出想对应,比如 Orderclass DoTransform(string s)与 void dofoo(Orderclass orc),
配置config.xml文件,参照样本改写就好,
将工程打包,部署,部署时一般在%mule_home%/lib/user/下面(名称可以随便起,因为mule会在整个user目录下寻找匹配的部署包、类),如果部署在别的地方要为jvm设置一下classpath。
Ok!

以上是基本的开发。具体有待使用研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值