wso2 ESB 在链中调用 Sequence Mediator

wso2 ESB calling Sequence Mediator in a chain

我在 wso2 ESB 中为客户提供了以下中介流程。

Sequence 1
    Call data service
    Check data availability
        if available
            Get data using data service
            Manipulate data using payload factory
            Iterate based on node
                send data to client
                get response
                create payload based on response to data service
                update database
            end iterate
        end if
    end

与序列 1 类似,我有序列 2、序列 3.. 序列 n 调用不同的数据服务和不同的客户端端点。序列 1 工作正常,获取数据并更新数据库。当流程转到序列 2 时,在记录时,我可以看到序列 1 中的 contents/messages 在序列 2 中找到,这导致序列 2 执行错误。我的问题是,有没有办法让 java flush(), close() 在 wso2 ESB 中从序列 1 移动到序列 2。

提前致谢。

解决方案 1:您可以使用 clone mediator 创建消息内容的多个实例。

方案二:另一种可能是将初始内容(sequence1开始前)存入a中,并在sequence2开始前再次更新初始内容。为此使用 enrich mediator

由于不推荐使用克隆中介(创建新线程!),我会选择使用丰富中介 的第二种解决方案。

<!-- store the initial message content -->
<enrich> 
    <source type="body" clone="true"/>
    <target type="property" property="BodyBackup"/>
</enrich>

<sequence key="sequence1"/>

<!-- restore the message content -->
<enrich> 
    <source type="property" property="BodyBackup"/>
    <target type="body"/>
</enrich>

<sequence key="sequence2"/>