📅  最后修改于: 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.