Как вернуть ответ через прокси wso2 esb с отправителем vfs JMS?

У меня есть прокси-сервис в WSO2 ESB 4.5.0, который должен обрабатывать SOAP-запрос от веб-клиента, отправлять информацию в тему JMS и затем отвечать веб-клиенту.

Проблема в том, что когда я использую JMS-отправитель, он по умолчанию ожидает ответа во временной очереди.

Чтобы изменить поведение JMS-Sender, я могу установить для OUT_ONLY значение true, но тогда веб-клиент вообще не получит ответа.

Есть ли способ вернуть ответ, даже если я установил для OUT_ONLY значение true?

OR

Могу ли я настроить JMS-Sender так, чтобы он не ожидал ответа без отправки OUT_ONLY в true?


person Tommy Ekh    schedule 06.12.2012    source источник


Ответы (1)


В соответствии с вашим требованием вам может потребоваться использовать хранилище сообщений, см. следующую конфигурацию, которая сохраняет сообщение в JMSStore и отправляет подтверждение обратно клиенту (успешно или неудачно), после чего ESB использует процессор прямого планирования, который гарантирует, что сохранить сообщение в JMSStore будет доставлено в серверную часть, и в случае сбоя реального BE (может быть JMS) оно удаляется, таким образом, используя сообщение доставлено, поэтому оно не будет удалено из хранилища сообщений, это часть того, как DEAD ПОСЛЕДНЯЯ КАНАЛИЗАЦИЯ была выполнена с использованием WSO2 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>
person Dushan Abeyruwan    schedule 16.02.2013