- MuleSoft教程
- MuleSoft - 主页
- MuleSoft - Mule ESB 简介
- MuleSoft - Mule 项目
- MuleSoft - 我们机器中的骡子
- MuleSoft - Anypoint Studio
- MuleSoft - 发现 Anypoint Studio
- 创建第一个 Mule 应用程序
- MuleSoft - DataWeave 语言
- 消息处理器和脚本组件
- 核心组件及其配置
- MuleSoft - 端点
- 流量控制和变压器
- 使用 Anypoint Studio 的 Web 服务
- MuleSoft - Mule 错误处理
- MuleSoft - Mule 异常处理
- MuleSoft - 使用 MUnit 进行测试
- MuleSoft 有用资源
- MuleSoft - 快速指南
- MuleSoft - 有用的资源
- MuleSoft - 讨论
MuleSoft - 流量控制和变压器
流量控制(路由器)
Flow Control 组件的主要任务是获取输入的 Mule 事件并将其路由到一个或多个单独的组件序列。它基本上是将输入 Mule 事件路由到其他组件序列。因此,它也被称为路由器。Choice 和 Scatter-Gather 路由器是流量控制组件下最常用的路由器。
选择路由器
顾名思义,该路由器应用 DataWeave 逻辑来选择两个或多个路由之一。正如前面所讨论的,每个路由都是一个单独的 Mule 事件处理器序列。我们可以将选择路由器定义为根据一组用于评估消息内容的 DataWeave 表达式通过流动态路由消息的路由器。
Choice路由器示意图
使用 Choice 路由器的效果就像在大多数编程语言中向流程或if/then/else代码块添加条件处理一样。以下是选择路由器的示意图,具有三个选项。其中,其中之一是默认路由器。
分散-聚集路由器
另一个最常用的路由事件处理器是Scatter-Gather 组件。顾名思义,它的工作原理是分散(复制)和聚集(合并)。我们可以借助以下两点来理解它的工作原理 -
首先,该路由器将 Mule 事件复制(分散)到两个或多个并行路由。条件是每个路由必须是一个或多个事件处理器的序列,就像一个子流。在这种情况下,每个路由都将使用单独的线程创建一个 Mule 事件。每个 Mule 事件都有自己的负载、属性和变量。
接下来,该路由器从每个路由收集创建的 Mule 事件,然后将它们合并到一个新的 Mule 事件中。之后,它将这个合并的 Mule 事件传递给下一个事件处理器。这里的条件是,只有当每条路由都成功完成时,SG路由器才会将合并的Mule事件传递给下一个事件处理器。
分散-聚集路由器示意图
以下是具有四个事件处理器的分散-收集路由器的示意图。它并行执行每条路线,而不是顺序执行。
分散-聚集路由器的错误处理
首先,我们必须了解 Scatter-Gather 组件中可能生成的错误类型。事件处理器内可能会生成任何错误,导致 Scatter-Gather 组件抛出 Mule 类型的错误: COMPOSITE_ERROR。仅当每条路由失败或完成后,SG 组件才会抛出此错误。
为了处理这种错误类型,可以在 Scatter-Gather 组件的每个路由中使用try 范围。如果tryscope成功处理了错误,那么路由肯定能够生成 Mule 事件。
变形金刚
假设如果我们想要设置或删除任何 Mule 事件的一部分,Transformer 组件是最佳选择。变压器组件有以下类型 -
拆下可变变压器
顾名思义,该组件采用变量名称并从 Mule 事件中删除该变量。
配置移除可变变压器
下表显示了配置删除变量变压器时要考虑的字段名称及其描述 -
先生编号 | 字段及解释 |
---|---|
1 |
显示名称(文档:名称) 我们可以自定义它,以在 Mule 工作流程中显示该组件的唯一名称。 |
2 | 名称(变量名) 它表示要删除的变量的名称。 |
设置有效负载变压器
在set-payload组件的帮助下,我们可以更新消息的有效负载,它可以是文字字符串或 DataWeave 表达式。不建议将此组件用于复杂的表达式或转换。它可以用于简单的选择,例如选择。
下表显示了配置设置有效负载转换器时要考虑的字段名称及其描述 -
场地 | 用法 | 解释 |
---|---|---|
价值(价值) | 强制的 | 设置有效负载需要该值字段。它将接受定义如何设置有效负载的文字字符串或 DataWeave 表达式。这些例子就像“一些字符串” |
哑剧类型(mimeType) | 选修的 | 它是可选的,但表示分配给消息有效负载的值的 mime 类型。这些例子就像文本/纯文本。 |
编码(编码) | 选修的 | 它也是可选的,但表示分配给消息有效负载的值的编码。这些示例类似于 UTF-8。 |
我们可以通过 XML 配置代码设置有效负载 -
使用静态内容- 以下 XML 配置代码将使用静态内容设置有效负载 -
<set-payload value = "{ 'name' : 'Gaurav', 'Id' : '2510' }" mimeType = "application/json" encoding = "UTF-8"/>
使用表达式内容- 以下 XML 配置代码将使用表达式内容设置有效负载 -
<set-payload value = "#['Hi' ++ ' Today is ' ++ now()]"/>
上面的示例将在今天的日期后面附加消息负载“Hi”。
设置变量变压器
在设置变量组件的帮助下,我们可以创建或更新一个变量来存储值,这些值可以是简单的文字值,如字符串、消息负载或属性对象,以便在 Mule 应用程序流程中使用。不建议将此组件用于复杂的表达式或转换。它可以用于简单的选择,例如选择。
配置设置变量变压器
下表显示了配置设置有效负载转换器时要考虑的字段名称及其描述 -
场地 | 用法 | 解释 |
---|---|---|
变量名(variableName) | 强制的 | 它是必需的,它代表变量的名称。命名时请遵循命名约定,必须包含数字、字符和下划线。 |
价值(价值) | 强制的 | 设置变量需要值字段。它将接受文字字符串或 DataWeave 表达式。 |
哑剧类型(mimeType) | 选修的 | 它是可选的,但代表变量的 mime 类型。这些例子就像文本/纯文本。 |
编码(编码) | 选修的 | 它也是可选的,但代表变量的编码。这些示例类似于 ISO 10646/Unicode(UTF-8)。 |
例子
下面的示例将变量设置为消息有效负载 -
Variable Name = msg_var Value = payload in Design center and #[payload] in Anypoint Studio
同样,下面的示例将变量设置为消息有效负载 -
Variable Name = msg_var Value = attributes in Design center and #[attributes] in Anypoint Studio.