【问题标题】:How do I return a response in an wso2 esb proxy with vfs JMS Sender?如何使用 vfs JMS Sender 在 wso2 esb 代理中返回响应?
【发布时间】:2012-12-06 09:17:06
【问题描述】:

我在 WSO2 ESB 4.5.0 中有一个代理服务,它应该处理来自 webclient 的 SOAP 请求,将信息发送到 JMS-topic,然后响应 webclient。

问题是当我使用 JMS-sender 时,它默认等待临时队列上的响应。

要更改 JMS-Sender 的行为,我可以将 OUT_ONLY 设置为 true,但是 Web 客户端根本没有得到响应。

即使我将 OUT_ONLY 设置为 true,是否有办法返回响应?

我可以将 JMS-Sender 设置为在不发送 OUT_ONLY 为 true 的情况下不期待回复吗?

【问题讨论】:

    标签: wso2 wso2esb vfs apache-commons-vfs


    【解决方案1】:

    根据您的要求,您可能需要使用 Messagestore,请参考以下配置,该配置将消息存储在 JMSStore 中并将确认发送回客户端(成功或失败),随后 ESB 使用前向调度处理器,该处理器保证 JMSStore 中的存储消息将被传递到后端,并且在真正的 BE(可能是 JMS)失败的情况下,它会退出,因此消息被传递,因此它不会从消息存储中删除,这是一部分如何使用 WSO2 ESB 完成 DEAD LATTER CHANNELING

    <proxy xmlns="http://ws.apache.org/ns/synapse" name="StockQuoteProxy" transports="http" statistics="disable" trace="disable" startOnLoad="true">
       <target>
          <inSequence>
            <property name="OUT_ONLY" value="true"/>
            <property name="target.endpoint" value="JMSEP"/>
             <property name="enableREST" value="true"/>
             <store messageStore="JMSMS"/>
             <payloadFactory>
                <format>
                   <esbResponse xmlns="">
                      <text> added sccuessfully </text>
                   </esbResponse>
                </format>
             </payloadFactory>
             <header name="To" action="remove"/>
             <property name="RESPONSE" value="true" scope="default" type="STRING"/>
             <send/>
          </inSequence>
          <faultSequence>
             <makefault version="soap11">
                <code xmlns:soap11Env="http://schemas.xmlsoap.org/soap/envelope/" value="soap11Env:VersionMismatch"/>
                <reason value="test"/>
                <role>MessageStoreFault</role>
                <detail>MessageStoreFault</detail>
             </makefault>
             <send/>
          </faultSequence>
       </target>
       <publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
       <description></description>
    </proxy>
    
    
    <endpoint xmlns="http://ws.apache.org/ns/synapse" name="JMSEP">
       <address uri="jms:/SimpleStockQuoteService?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://localhost:61616" format="pox">
          <suspendOnFailure>
             <progressionFactor>1.0</progressionFactor>
          </suspendOnFailure>
          <markForSuspension>
             <retriesBeforeSuspension>0</retriesBeforeSuspension>
             <retryDelay>0</retryDelay>
          </markForSuspension>
          <timeout>
             <duration>1000</duration>
             <responseAction>fault</responseAction>
          </timeout>
       </address>
    </endpoint>
    
    <messageStore name="JMSMS" class="org.wso2.carbon.message.store.persistence.jms.JMSMessageStore" xmlns="http://ws.apache.org/ns/synapse">
       <parameter name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</parameter>
       <parameter name="java.naming.provider.url">tcp://localhost:61616</parameter>
       <parameter name="store.jms.destination">JMSMS</parameter>
       <parameter name="store.jms.JMSSpecVersion">1.1</parameter>
       <parameter name="store.jms.cache.connection">false</parameter>
    </messageStore>
    
    <messageProcessor name="Processor1" class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor" messageStore="JMSMS" xmlns="http://ws.apache.org/ns/synapse">
       <parameter name="interval">4000</parameter>
    </messageProcessor>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多