📜  MuleSoft-流量控制和变压器

📅  最后修改于: 2020-11-12 05:04:08             🧑  作者: Mango


流控制(路由器)

流控制组件的主要任务是获取输入的Mule事件并将其路由到一个或多个单独的组件序列。它基本上是将输入Mule事件路由到其他组件序列。因此,它也称为路由器。选择和分散收集路由器是流控制组件下使用最多的路由器。

选择路由器

顾名思义,此路由器应用DataWeave逻辑来选择两个或多个路由之一。如前所述,每个路由都是独立的Mule事件处理器序列。我们可以将选择路由器定义为根据一组用于评估消息内容的DataWeave表达式动态路由消息流的路由器。

选择路由器的示意图

使用Choice路由器的效果就像在大多数编程语言中向流或if / then / else代码块中添加条件处理一样。以下是具有三个选项的Choice Router的示意图。其中之一是默认路由器。

选择路由器

分散收集路由器

另一个最常用的路由事件处理器是Scatter-Gather组件。顾名思义,它适用于散布(复制)和聚集(合并)的基础。我们可以通过以下两点来理解它的工作-

  • 首先,此路由器将Mule事件复制(分散)到两个或多个并行路由。条件是每个路由必须是一个或多个事件处理器的序列,就像子流一样。在这种情况下,每个路由都将使用单独的线程创建一个Mule事件。每个Mule事件都会有其自己的有效负载,属性以及变量。

  • 接下来,此路由器从每个路由中收集创建的Mule事件,然后将它们合并到一个新的Mule事件中。之后,它将合并的Mule事件传递给下一个事件处理器。这里的条件是,只有在每条路由成功完成后,SG路由器才会将合并的Mule事件传递给下一个事件处理器。

散布式路由器原理图

以下是具有四个事件处理器的分散式聚集路由器的示意图。它并行而不是顺序地执行每个路由。

散布收集路由器

分散收集路由器的错误处理

首先,我们必须了解Scatter-Gather组件中可能产生的错误类型。事件处理器内可能会导致任何错误,导致Scatter-Gather组件抛出Mule类型的错误:COMPOSITE_ERROR 。仅在每条路由失败或完成后,SG组件才会引发此错误。

要处理此错误类型,可以在Scatter-Gather组件的每个路由中使用try范围。如果错误由try scope成功处理,则该路由肯定会生成Mule事件。

变形金刚

假设如果要设置或删除任何Mule事件的一部分,则Transformer组件是最佳选择。变压器组件具有以下类型-

卸下可变变压器

顾名思义,此组件采用变量名称,并将其从Mule事件中删除。

配置移除变量变压器

下表显示了配置删除变量转换器时要考虑的字段名称及其描述-

Sr.No Field & Explanation
1

Display Name (doc:name)

We can customize this to display a unique name for this component in our Mule working flow.

2

Name (variableName)

It represents the name of the variable to remove.

设置有效载荷变压器

借助set-payload组件,我们可以更新消息的有效负载,可以是字面量字符串或DataWeave表达式。不建议将此组件用于复杂的表达式或转换。它可以用于简单的选择

下表显示了配置集有效载荷转换器时要考虑的字段名称及其描述-

Field Usage Explanation
Value (value) Mandatory The value filed is required for setting a payload. It will accept a literal string or DataWeave expression defining how to set the payload. The examples are like “some string”
Mime Type (mimeType) Optional It’s optional but represents the mime type of the value assigned to the payload of message. The examples are like text/plain.
Encoding (encoding) Optional It’s also optional but represents the encoding of the value that is assigned to the payload of message. The examples are like UTF-8.

我们可以通过XML配置代码设置有效负载-

使用静态内容-以下XML配置代码将通过使用静态内容来设置有效负载-


使用Expression Content-以下XML配置代码将使用Expression Content设置有效负载-


上面的示例将在今天的日期后附加消息有效负载“ Hi”。

设置变量变压器

借助设置变量组件,我们可以创建或更新变量以存储值,这些值可以是简单的字面量值,例如字符串,消息有效负载或属性对象,以在Mule应用程序流程中使用。不建议将此组件用于复杂的表达式或转换。它可以用于简单的选择

配置设定变量变压器

下表显示了配置集有效载荷转换器时要考虑的字段名称及其描述-

Field Usage Explanation
Variable Name (variableName) Mandatory It is required filed and it represents the name of the variable. While giving the name, follow the naming convention like it must contain number, characters and underscores.
Value (value) Mandatory The value filed is required for setting a variable. It will accept a literal string or DataWeave expression.
Mime Type (mimeType) Optional It’s optional but represents the mime type of the variable. The examples are like text/plain.
Encoding (encoding) Optional It’s also optional but represents the encoding of the variable. The examples are like 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.