MuleSoft - 消息处理器和脚本组件


脚本模块方便用户在Mule中使用脚本语言。简单来说,脚本模块可以交换用脚本语言编写的自定义逻辑。脚本可以用作实现或转换器。它们可用于表达式求值,即控制消息路由。

Mule 支持以下脚本语言 -

  • 格罗维
  • Python
  • JavaScript
  • Ruby

如何安装脚本模块?

实际上,Anypoint Studio 附带了脚本模块。如果你在 Mule Palette 中没有找到该模块,那么可以使用+Add Module添加它。添加后,我们就可以在Mule应用程序中使用脚本模块操作了。

实施示例

正如所讨论的,我们需要将模块拖放到画布中以创建工作区并在我们的应用程序中使用它。以下是一个例子 -

安装脚本模块

我们已经知道如何配置 HTTP Listener 组件;因此我们将讨论配置脚本模块。我们需要按照下面写的步骤来配置脚本模块 -

步骤1

从 Mule Palette 中搜索 Scripting 模块,并将脚本模块的EXECUTE操作拖到您的流程中,如上所示。

第2步

现在,双击打开“执行配置”选项卡。

步骤3

“常规”选项卡下,我们需要在“代码”文本窗口中提供代码,如下所示 -

代码文本窗口

步骤4

最后,我们需要从执行组件中选择引擎。引擎列表如下 -

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

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

  • 路由器- 该消息处理器用于控制消息流的路由、重新排序或拆分。

  • 范围- 基本上是为了在流程中定义细粒度Behave而包装代码片段。

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

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

  • 异常策略- 这些消息处理器处理消息处理期间发生的任何类型的错误。