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.