试着了解何时在Mule中使用Message Enricher?有人用真实用法解释会很棒。我已经通过了mule文档示例
答案 0 :(得分:7)
当您不丢失现有有效负载时,最好使用Mule消息扩充器。
例如,我们考虑一下,您需要在流程中间中调用数据库,这样做会导致您的当前有效负载失效来自数据库的数据,您不希望这种情况发生。
所以,在这里,您需要使用消息丰富的数据库组件包装。通过这样做,您将从数据库中获取数据,并且不会丢失您现有的当前有效负载。
<enricher target="#[flowVars.recordFound]" doc:name="Message Enricher">
<db:select config-ref="Derby_Configuration1" doc:name="DB_Details">
<db:parameterized-query><![CDATA[select * from Table1]]></db:parameterized-query>
</db:select>
</enricher>
由于消息扩充器获取当前有效负载的副本,因此现有的有效负载不会丢失 有关更多信息,请参阅此处: - http://www.slideshare.net/anir37/mule-message-enricher
答案 1 :(得分:1)
Message Enricher将用于存储数据并在将来的处理中检查数据,就像您必须进行批处理一样,以便它必须在第一批中检查数据是否存在,如果不是,我们可以插入第二批数据。
就像丰富源系统中没有的消息一样。
答案 2 :(得分:1)
一种常见情况涉及需要使用源系统未提供的信息来丰富传入消息。如果目标系统需要的信息多于源系统可提供的信息,则可以使用内容更丰富的内容。
考虑来自源系统的消息包含邮政编码,但目标系统需要两个字母的状态。可以使用消息扩充器使用来自富集资源的邮政编码来查找状态。 richr使用当前消息(包含邮政编码)调用富集资源,然后使用结果丰富当前消息。
这是一个非常简单的流程,具有单向入站和出站端点,并且作为订单处理管道的一部分。此流使用richher将状态流变量添加到当前消息,其状态为stateLookup端点返回。 'target'属性定义了如何使用与表达式赋值器使用相同语法的MessageEnricher来丰富当前消息。
答案 3 :(得分:0)
Mule Enricher是一个组件,使用richher的整个想法是保持有效负载事务的完整性并使用它的内容来应用一些逻辑并将结果存储在变量中。
e.g。可以是一个xml有效载荷,用于导出复杂的逻辑结果,如折扣计算,然后它的结果可以存储在一个变量中,并可以进一步使用。
答案 4 :(得分:0)
要添加这些答案,您还可以通过在Message Enricher中定义源和目标,将返回消息(例如,有效负载)设置为有效负载,流变量和出站属性。
答案 5 :(得分:0)
Mule中 Message Enricher 的主要目的是即使在使用流参考调用另一个流之后也要承载相同的有效负载。
正如您在附加的屏幕截图中看到的,这里有两个流引用,一个在 Message Enricher 下,即Message Enricher流引用将阻止有效负载被引用的流中的有效负载覆盖(overridenFlow),维护原始有效负载以便可以进一步使用
在第二个流参考之后,有效载荷被覆盖,并且无法进一步访问原始有效载荷。
答案 6 :(得分:0)
消息丰富主要用于从有效负载中提取某些内容(例如xpath)并将其存储到流/会话变量中,而不实际更改有效负载。
更多优势: 1)源可以是任何东西(即有效载荷,变量等) 2)也可以修改源以便能够从中提取信息。 3)还有多个来源和目标选项。
此外,因为只有一个组件可以驻留在Message Enricher中。如果需要更多组件驻留在Message Enricher中,建议使用处理器链。
答案 7 :(得分:0)
Mule中的Message Enricher用于携带相同的有效负载,即使在使用流参考调用另一个流后也是如此。
示例用例:如果您从某些SaaS应用程序获取数据,然后想要将该数据存储在数据库中,那么数据库中没有重复的条目。在这种情况下,您可以在将消息插入数据库之前,在消息Enricher的帮助下检查重复数据。
答案 8 :(得分:0)
消息丰富是Mulesoft的重要组成部分之一。在各种情况下,您可以使用消息丰富组件。
在数据源之间同步数据时,通常会检查目标资源中是否已存在记录。
如果您只是添加端点以在添加目标资源之前先查询目标资源,则响应将成为有效负载。这不是你想要的!
您希望外部呼叫充当现有消息,并保留原始有效负载。
答案 9 :(得分:-1)
Mule中的Message Enricher用于携带相同的有效负载,即使在使用流参考调用另一个流后也是如此。