2012-12-06 3 views
3

웹 클라이언트에서 SOAP 요청을 처리하고 JMS 항목으로 정보를 보낸 다음 웹 클라이언트에 응답해야하는 WSO2 ESB 4.5.0에 프록시 서비스가 있습니다.vfs JMS Sender를 사용하여 wso2 esb 프록시에서 응답을 반환하려면 어떻게합니까?

문제는 JMS-sender를 사용할 때 기본적으로 임시 대기열에서 응답을 기다리는 것입니다.

JMS-Sender의 동작을 변경하려면 OUT_ONLY를 true로 설정할 수 있지만 웹 클라이언트는 응답을 전혀받지 못합니다.

OUT_ONLY를 true로 설정해도 응답을 반환 할 수 있습니까?

또는

나는 JMS-보낸 true로 OUT_ONLY 전송하지 않고 응답을 기대하지를 설정할 수 있습니까?

답변

4

요구 사항에 따라 Messagestore를 사용해야 할 수도 있습니다. 다음 구성을 참조하십시오. JMSSTore에 메시지를 저장하고 확인 응답을 클라이언트에 전송 (성공 또는 실패) 한 다음 ESB는 전달 스케줄 프로세서 이는 JMSStore의 저장소 메시지가 백엔드로 전달되도록 보장하며 실제 BE (JMS 일 수 있음)가 실패한 경우이를 회수하여 유틸리티가 메시지를 전달하므로 메시지 저장소에서 제거되지 않습니다. WSO2를 사용하여 DEAD LATTER CHANNELING이 어떻게 이루어 졌는지 ESB

<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>