在流程执行期间保持有效负载状态的最佳方法是什么。我有一个执行多个数据库和Web服务执行的流程,但每次执行连接器执行时,我的有效负载都会丢失。保持这一点。 为了维护状态,我的所有连接器执行都在消息扩展范围内执行,这些出站连接器的响应填充在变量中。即使我觉得这些都是完全浪费记忆。
请建议。
问候 桑托什
答案 0 :(得分:1)
如果你没有把它们放在flowVars中,你会对这些其他db / ws调用的结果做什么?你想把它们放在哪里?
如果您不想丢失原始有效负载,则可能正在使用MessageEnricher。
如果您不想将每个richher的结果放在vars中,您可以将它们添加到消息有效负载本身。如果有效负载是map的实例或带有setter的pojo,您只需添加一个richrs结果,如下所示:
<enricher source="#[message.payload]" target="#[message.payload.enricherResult]" doc:name="Message Enricher">
如果您希望保持原始有效负载,可以将其作为关键字“原始”或其他内容移动到地图中,然后将每个更丰富的结果添加为新密钥。
无论哪种方式,您计划保留每个richves结果的事实可能意味着使用相同数量的内存,无论您将它们放在flowVars中还是将它们填充到有效负载本身中。
答案 1 :(得分:0)
另一种简单的方法是,在DB调用或外部服务调用之前将消息有效负载保存到某个变量中 您可以稍后从变量中检索值并将其设置为有效负载