MuleSoft - 消息处理器和脚本组件
脚本模块方便用户在 Mule 中使用脚本语言。简单来说,脚本模块可以交换用脚本语言编写的自定义逻辑。脚本可以用作实现或转换器。它们可用于表达式评估,即控制消息路由。
Mule 支持以下脚本语言 −
- Groovy
- Python
- JavaScript
- Ruby
如何安装脚本模块?
实际上,Anypoint Studio 附带了脚本模块。如果您在 Mule Palette 中找不到该模块,则可以使用 +Add Module 添加它。添加后,我们可以在 Mule 应用程序中使用脚本模块操作。
实现示例
如前所述,我们需要将模块拖放到用于创建工作区的画布中,并在我们的应用程序中使用它。以下是它的一个示例 −

我们已经知道如何配置 HTTP 侦听器组件;因此我们将讨论如何配置脚本模块。我们需要按照下面写的步骤来配置脚本模块 −
步骤 1
从 Mule Palette 中搜索脚本模块,并将脚本模块的 EXECUTE 操作拖到您的流程中,如上所示。
步骤 2
现在,双击打开执行配置选项卡。
步骤 3
在 General 选项卡下,我们需要在 Code text window 中提供代码,如下所示 −

步骤 4
最后,我们需要从中选择 Engine执行组件。引擎列表如下 −
- Groovy
- Nashorn(javaScript)
- jython(Python)
- jRuby(Ruby)
配置 XML 编辑器中上述执行示例的 XML 如下 −
<scripting:execute engine="jython" doc:name = "Script"> <scripting:code> def factorial(n): if n == 0: return 1 return n * factorial(n-1) result = factorial(10) </scripting:code> </scripting:execute>
消息源
Mule 4 的消息模型比 Mule 3 的消息模型更简单,因此更容易在连接器之间以一致的方式处理数据,而不会覆盖信息。在 Mule 4 消息模型中,每个 Mule 事件由两部分组成:一条消息和与之关联的变量。
一条 Mule 消息具有有效负载及其属性,其中属性主要是文件大小等元数据。
变量保存任意用户信息,如操作结果、辅助值等。
入站
Mule 3 中的入站属性现在成为 Mule 4 中的属性。我们知道,入站属性存储了通过消息源获得的有关有效负载的附加信息,但现在在 Mule 4 中,这是在属性的帮助下完成的。属性具有以下优点 −
借助属性,我们可以轻松查看哪些数据可用,因为属性是强类型的。
我们可以轻松访问属性中包含的信息。
以下是 Mule 4 中典型消息的示例 −

出站
Mule 3 中的出站属性必须由 Mule 连接器和传输器明确指定,以便发送其他数据。但在 Mule 4 中,可以单独设置每个属性,并使用 DataWeave 表达式对每个属性进行设置。它不会在主流程中产生任何副作用。
例如,下面的 DataWeave 表达式将执行 HTTP 请求并生成标头和查询参数,而无需设置消息属性。这在下面的代码中显示 −
<http:request path = "M_issue" config-ref="http" method = "GET"> <http:headers>#[{'path':'input/issues-list.json'}]</http:headers> <http:query-params>#[{'provider':'memory-provider'}]</http:query-params> </http:request>
消息处理器
一旦 Mule 从消息源接收到消息,消息处理器的工作就开始了。Mule 使用一个或多个消息处理器通过流程处理消息。消息处理器的主要任务是在消息通过 Mule 流程时对其进行转换、过滤、丰富和处理。
Mule 处理器的分类
以下是基于功能的 Mule 处理器类别 −
连接器 − 这些消息处理器发送和接收数据。它们还通过标准协议或第三方 API 将数据插入外部数据源。
组件 −这些消息处理器本质上非常灵活,可以执行以各种语言(如 Java、JavaScript、Groovy、Python 或 Ruby)实现的业务逻辑。
过滤器 − 它们会过滤消息,并根据特定标准仅允许特定消息继续在流中进行处理。
路由器 − 此消息处理器用于控制消息流以进行路由、重新排序或拆分。
范围 − 它们基本上包装了代码片段,以便在流中定义细粒度的行为。
转换器 − 转换器的作用是转换消息负载类型和数据格式,以促进系统之间的通信。
业务事件 −它们基本上捕获与关键绩效指标相关的数据。
异常策略 − 这些消息处理器处理在消息处理过程中发生的任何类型的错误。