Transactions 在WSO2中使用事务中介器和克隆中介器

Transactions 在WSO2中使用事务中介器和克隆中介器,transactions,wso2,wso2esb,Transactions,Wso2,Wso2esb,在阅读了下面的几个问题之后,我向WSO2提出了两个与事务调解人相关的问题: 我的问题是: 我可以使用事务来支持克隆中介程序吗?就像我克隆一条消息并发送到多个序列一样,如果某个序列产生错误,我会回滚吗 我看到的所有与transaction mediator相关的wso2示例都使用dbreport mediator,在该mediator中我可以指定“useTransation=”true“,我可以对其他mediator执行相同的操作吗 例如,在问题1中: <?xml version="1

在阅读了下面的几个问题之后,我向WSO2提出了两个与事务调解人相关的问题:

  • 我的问题是:

  • 我可以使用事务来支持克隆中介程序吗?就像我克隆一条消息并发送到多个序列一样,如果某个序列产生错误,我会回滚吗

  • 我看到的所有与transaction mediator相关的wso2示例都使用dbreport mediator,在该mediator中我可以指定“useTransation=”true“,我可以对其他mediator执行相同的操作吗

  • 例如,在问题1中:

    <?xml version="1.0" encoding="UTF-8"?>
    <proxy xmlns="http://ws.apache.org/ns/synapse"
           name="proxy1"
           transports="https,http"
           statistics="enable"
           trace="enable"
           startOnLoad="true">
       <target>
          <inSequence onError="conf:/secuencias/rollbackSequence">
             <transaction action="new"/>
             <clone sequential="true">
                <target sequence="anon">
                   <sequence>
                      <payloadFactory media-type="xml">
                         ....
                      </payloadFactory>
                      <send>
                         <endpoint>
                            <address uri="..."/>
                         </endpoint>
                      </send>
                   </sequence>
                </target>
                <target sequence="anon">
                   <sequence>
                      <payloadFactory media-type="xml">
                        ....
                      </payloadFactory>
                      <send>
                         <endpoint>
                            <address uri="..."/>
                         </endpoint>
                      </send>
                   </sequence>
                </target>
                <target sequence="anon">
                   <sequence>
                      <payloadFactory media-type="xml">
                        ....
                      </payloadFactory>
                      <send>
                         <endpoint>
                            <address uri="..."/>
                         </endpoint>
                      </send>
                   </sequence>
                </target>
             </clone>
             <transaction action="commit"/>
          </inSequence>
          <outSequence>
             <aggregate>
                <completeCondition timeout="5">
                   <messageCount min="3" max="3"/>
                </completeCondition>
                <onComplete xmlns:ns="http://org.apache.synapse/xsd"
                            xmlns:p="http://sistema1.empresa1.com"
                            expression="//p:GeneratedKeys/Entry/ID">
                   <payloadFactory media-type="xml">
                        ....
                   </payloadFactory>
                   <send/>
                </onComplete>
             </aggregate>
          </outSequence>
          <faultSequence>
             <transaction action="rollback"/>
             <send/>
          </faultSequence>
       </target>
       <publishWSDL key="conf:/wsdls/....wsdl"/>
       <description/>
    </proxy>
    
    
    ....
    ....
    ....
    ....
    
  • 不幸的是,在WSO2的当前实现中,ESB不支持将事务中介器与克隆中介器一起使用

  • 目前,wso2 esb与transaction mediator配合使用,以便与dbreport mediator配合使用,并且您可以在那里正确地使用“useTransation=”true”。除此之外,您只能在JMS使用者/生产者场景中使用transaction with transaction mediator


  • Jorge,你明白这一点了吗?在开发跨多个代理和序列的解决方案时,我们也遇到了类似的事务问题。