2012-12-06 52 views
3

我在WSO2 ESB 4.5.0中有一個代理服務,用於處理來自Web客戶端的SOAP請求,將信息發送給JMS主題,然後響應Web客戶端。如何使用vfs JMS發件人在wso2 esb代理中返回響應?

問題是,當我使用JMS發件人時,默認情況下會等待臨時隊列上的響應。

要更改JMS發件人的行爲,我可以將OUT_ONLY設置爲true,但webclient根本沒有得到響應。

即使我將OUT_ONLY設置爲true,是否有返回響應的方法?

OR

我可以設置JMS發送者不要指望不OUT_ONLY發送到真正的答覆?

回答

4

根據您的要求,您可能需要使用Messagestore,請參考以下配置,該配置將消息存儲在JMSStore中,並將確認發送回客戶端(成功或失敗),隨後ESB使用forward schedul處理器這保證了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>