【发布时间】:2014-01-01 08:21:42
【问题描述】:
确保在流执行期间保持有效负载状态的最佳方法是什么。我有一个执行多个数据库和 Web 服务执行的流程,但是每次我执行连接器执行时,我的有效负载都会丢失。保持这一点。 为了维护状态,我的所有连接器执行都在消息丰富器范围内执行,并且来自这些出站连接器的响应填充在变量中。尽管我觉得这些完全是在浪费内存。
请多多指教。
问候 桑托什
【问题讨论】:
标签: mule
确保在流执行期间保持有效负载状态的最佳方法是什么。我有一个执行多个数据库和 Web 服务执行的流程,但是每次我执行连接器执行时,我的有效负载都会丢失。保持这一点。 为了维护状态,我的所有连接器执行都在消息丰富器范围内执行,并且来自这些出站连接器的响应填充在变量中。尽管我觉得这些完全是在浪费内存。
请多多指教。
问候 桑托什
【问题讨论】:
标签: mule
如果您没有将这些其他 db / ws 调用的结果放入 flowVars 中,您将如何处理它们?你想把它们放在哪里?
如果您不想丢失原始有效负载,您可能正在做正确的事情来使用 MessageEnricher。
如果您不想将每个丰富器的结果放在 vars 中,您可以将它们添加到消息负载本身。如果负载是 map 的实例或带有 setter 的 pojo,您可以简单地添加丰富器结果,如下所示:
<enricher source="#[message.payload]" target="#[message.payload.enricherResult]" doc:name="Message Enricher">
如果您想保持有效负载原始,您可以将其作为键“原始”或其他内容移动到地图中,然后将每个丰富器结果添加为新键。
无论哪种方式,您计划保留每个丰富器结果这一事实可能意味着无论您将它们放在 flowVars 中还是将它们填充到有效负载本身中,都使用了相同数量的内存。
【讨论】:
另一种简单的方法是,在数据库调用或外部服务调用之前将消息负载保存到某个变量中。
您可以稍后从变量中检索值并将其设置为有效负载
【讨论】: