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 中提供代码,如下所示 −

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 中典型消息的示例 −

Inbound

出站

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)实现的业务逻辑。

  • 过滤器 − 它们会过滤消息,并根据特定标准仅允许特定消息继续在流中进行处理。

  • 路由器 − 此消息处理器用于控制消息流以进行路由、重新排序或拆分。

  • 范围 − 它们基本上包装了代码片段,以便在流中定义细粒度的行为。

  • 转换器 − 转换器的作用是转换消息负载类型和数据格式,以促进系统之间的通信。

  • 业务事件 −它们基本上捕获与关键绩效指标相关的数据。

  • 异常策略 − 这些消息处理器处理在消息处理过程中发生的任何类型的错误。