Mule的消息结构

mule message

在mule的组件与组件之间、流与流之间的是通过消息进行交互的,在mule中称为mule message,结构如下:
这里写图片描述

mule message主要包含两个部分:
消息头:主要指该消息的一些元数据;
消息体:该部分在mule中称作payload,主要传递一些业务数据。

mule message 包含在消息对象(message object)中,一个消息对像除了可以包含mule message,还可以包含变量(variable)、附件(attachment)、异常payload(exception payload),这些部分都可以从上图看出。

消息头
消息头包含两部分,这两部分属于属性。分别是Inbound properties和Outbound properties。

Inbound properties:该部分是由消息源自动生成的,不能改变,即不允许用户去设置。该部分主要是关于该消息的一些元数据,比如请求的路径、请求的ip等。当Inbound properties在流内部传递时将会得到保留,而在流之间进行传递时,将会丢失:
这里写图片描述
Outbound properties:该部分是可变的,用户可以在流中对其进行设置。如果Outbound properties从一个流的出站端点留到另外一个流的入站端点,那么这个Outbound properties将会变成Inbound properties。但是如果另外一个流是使用流引入这种方式引入的话,那么这个Outbound properties属性依然为Outbound properties属性:
这里写图片描述

变量
变量是用户定义的关于消息的一下元数据,变量有三个作用域:
(1)、Flow variables:流内可使用;
(2)、Session variables:在同个应用的不同流可使用;
(3)、Record variables:仅适用于作为批次的一部分处理的记录。

在官方的文档中有这样的说明:变量比较适合保存一些临时的属性,而不应该和消息一起传递到目的地。变量应该是由用户人工创建的,而属性更倾向于由系统调用自动产生,但是并没有严格的去限定如何去使用变量或者属性。

可进行的操作
在mule中,可以对属性和变量进行设置、拷贝和删除操作,这些操作可以通过三个组件实现,每个组件都提供以上三个操作,这三个组件分别是:
Property Transformer:对Outbound properties的属性进行设置、拷贝或删除
Variable Transformer:可以设置、拷贝和删除变量,设置的变量只在当前流中有限,在当前流之外的流将无效。
Session Variable Transformer:该组件设置的变量,可以在当前应用的多个流中使用。

访问mule message各部分的消息
可以用MEL(mule expression language)访问消息中不同部分的内容:
Outbound Property:#[message.outboundProperties]
Inbound Property:#[message.inboundProperties]
Session Variable:#[sessionVars]
Variable:#[flowVars]

payLoad
payLoad是mule message中很重要的一部分,因为它是承载着应用需要使用的数据。mule中很多组件可以改变payLoad的内容(例如用set payLoad组件),同时也可以通过MEL获取payLoad里面的内容。
在某些情况下,你可能希望调用外部资源,并使用响应来丰富消息有效载荷,而不是替换它。 为此,您可以使用Message Enricight scope(或wrapper)封装一个或多个执行获取信息任务的消息处理器。Mule会添加或丰富payLoad,并调用资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值