Mule消息结构

Mule消息是通过一个或多个流传递应用程序的数据。它由两个主要部分组成:

消息头(Message Header),它包含关于消息的元数据

.消息有效负载(Message Payload),它包含您的特定的业务数据。

Mule消息本身嵌入在Mule消息对象(mule message object )中。一些Mule消息对象可能包含变量(variables)、附件(attachment)和异常有效负载(exception payloads)。附件和异常有效负载不经常被使用或被操纵。

message_object

属性和变量(properties and variables)

包含在消息头(message header)中的元数据(metadata)由提供关于消息的有用信息的属性组成,包含在消息对象中的变量(variables)表示消息的数据。
属性和变量共享一种通用格式:每个属性或变量都有一个名称和一个值。名称是在Mule中引用属性或变量,其值是存储在其中的信息。因此,这个名字就像门的钥匙,它的值是这扇门背后的用料。
消息的属性和变量具有特定的作用域(scopes),作用域定义并组织了属性和变量是如何在消息的整个生命周期中使用的。属性将元数据与消息一起发送,
以方便处理和避免当消息跨越传输障碍时的错误——通过输入一个新的流或被传送到另一个应用程序。

属性有两个主要作用域:入站和出站(inbound and outbound)

.入站属性(inbound properties)是不可变的,由消息源自动生成,不能由用户设置或操作。
它们包含特定于消息源的元数据,这些元数据可以防止在消息的生命周期中出现数据格式的混乱或其他处理灾难。
消息仅在流的持续时间内保留其入站属性;当消息从流中流出时,它的入站属性不会跟随着它(见下图)。

.出站属性(Outbound properties)

出站属性是可变的, 它们是在流的过程中设置的,当消息从一个流的出站端点通过传输传递到另一个流的入站端点时,就可以成为入站属性。它们包含与入站属性类似的元数据,但在消息进入流之后,将应用出站属性。出站属性可以由Mule自动设置,用户可以通过手动在流中插入一个或多个transformer元素来设置它们。请注意,如果消息通过流引用而不是连接器传递给新的流,那么出站属性仍然是出站属性,而不是转换为入站属性(见下图)


变量是关于消息的用户定义的元数据。变量有三个范围:

.Flow variables流变量只适用于它们存在的流。

.Session variables会话变量适用于同一应用程序中的所有流。

.Record variables记录变量只适用于处理作为批处理的一部分的记录。

变量是关于消息的临时信息,这些信息是用于处理它的应用程序所使用的,不是将消息传递给它的目的地。因此,变量更有可能由人来设置,而属性更可能由系统设置和调用。但是,对于如何使用属性和变量,并没有严格的规则。

设置和使用属性(properties)和变量(variables)

Mule包括三个消息处理程序,您可以使用它们来设置、复制或删除消息流中的出站属性和变量。

当您在流中包含其中一个转换器时, Mule 会添加、复制或删除消息头或对象的元数据。 ( 还有第四种消息处理器 : 记录变量转换器可以在一个批处理中设置或删除一个记录中的变量。例如,您可能希望向消息中添加一个属性,以便在消息中设置 HTTP 传输头。或者,如果您的流查找与用户相关的帐户编号,您可能想要在消息中添加一个变量,以便将帐户号存储为消息上的元数据。下面的表描述了这三个消息处理器 : 属性转换器( Property Transformer )、变量转换器( Variable Transformer )和会话变量转换器 ( Session Variable Transformer )

 

Property

Variable

Session Variable

Use

使用属性转换器在消息的出站范围内设置、删除或复制属性。

使用变量转换器在消息上设置或删除一个流变量,并绑定到当前流。

使用会话变量转换器来设置或删除与当前消息绑定在整个生命周期中的变量,跨多个流、应用程序,甚至是服务器。

Persistence

一旦消息到达outbound-端点,出站范围内的所有属性都以消息的形式发送,以特定于传输的元数据的形式(例如,HTTP消息头的HTTP)

变量转换器设置的变量只对当前流进行持久化,不能跨越传输障碍。

使用会话变量转换器设置的会话变量在整个消息生命周期中都存在,而不考虑传输障碍。

请注意,当使用支持会话的传输协议时,会话变量会在传输障碍中持续存在。


例如,下面的流在消息上设置了一个出站属性 - 一个时间戳。

mule+message+structure

要访问您在流中的消息或应用程序中不同的流中设置的属性或变量,请使用MEL表达式。

Type

Set or Remove

Copy

Access using MEL

Outbound Property

Property Transformer

Property Transformer

messsage.outboundProperties

Inbound Property

 

 


message.inboundProperties

Session Variable


Session variable Transformer

 

 

sessionVars

Variable

Variable Transformer

Variable Transformer


flowVars

例如,如果您想根据前面在处理中添加到消息头的时间戳属性来路由消息,那么可以在选择路由器中使用表达式来访问出站属性使用消息。

使用message.outboundProperties 访问时间戳属性并计算属性值(即消息上的时间戳)


类似地,一旦设置了会话变量,就可以使用Mule表达式中的sessionVars映射来访问它。

例如,如果您已经设置了一个名为“SVname”的会话变量和值“SVvalue”,那么您可以使用表达式sessionVarsSVname来调用这个会话变量,

该变量的值为SVvalue。访问一个变量, 在前面的表达式中使用flowVars代替sessionVars

消息有效负载(message payload)

消息有效负载是Mule消息中最重要的部分,因为它包含了Mule应用程序处理的数据。您可以将元数据应用到消息头或消息对象中,以传递有关消息的信息,

或将其从被篡改的信息中保护出来,但是消息的核心——您正在传输的数据——是消息首先存在的原因。

payload并不一定和它通过流传播的一样。Mule流中的各种消息处理器可以通过设置、充实或将其转换为一种新的格式来影响payload

您还可以使用MEL表达式从一个流中的payload中提取信息。

设置一个消息的payload

使用Set payload息处理器来完全替换消息有效负载的内容。输入一个字符串或Mule表达式,该表达式定义了Mule应该设置的新负载。

下面的示例用一个字符串来替换有效负载,该字符串会读取”HelloMyfriend! ”



丰富一个消息的payload
在某些情况下,您可能希望调用外部资源,并使用响应来充实消息的payload,而不是替换它。为此,
您可以使用Message Enricher范围(或包装器)封装一个或多个消息处理器来执行获取信息的任务。
一旦获得,Mule添加或丰富了消息的payload,并使用对资源的调用结果。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值