Может кто-нибудь объяснить синтаксис и функции ниже wso2 esb synapse.xml файла. Посредничество сообщения coccurs

Кто-нибудь может объяснить, как происходит передача сообщения в приведенном ниже XML-коде? Например, что такое основная последовательность, последовательность прокси-службы, что делает здесь главный посредник и т. Д. Почему в некоторой ситуации endpoint определено выше по порядку в прокси-сервисе?

Каковы параметры прокси-сервиса и как вызвать последовательность с помощью Developer Studio?

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://ws.apache.org/ns/synapse">
<registry provider="org.wso2.carbon.mediation.registry.ESBRegistry">
<parameter name="localRegistry">/</parameter>
<parameter name="cachableDuration">15000</parameter>
</registry>
<proxy name="CreditCardPaymentService"
      transports="https http"
      startOnLoad="true"
      trace="disable">
  <description/>
  <target>
     <inSequence>
        <property xmlns:xsd="http://ccps.services.esb.wso2.packt.com/xsd"
                  xmlns:m0="http://ccps.services.esb.wso2.packt.com"
                  name="symbol"
                  expression="//m0:doPayment/m0:paymentInfo/xsd:cardType"
                  scope="default"
                  type="STRING"/>
        <property xmlns:xsd="http://ccps.services.esb.wso2.packt.com/xsd"
                  xmlns:m0="http://ccps.services.esb.wso2.packt.com"
                  name="filepath"
                  expression="fn:concat('file:./repository/', //m0:doPayment/m0:paymentInfo/xsd:cardType)"/>
        <property name="EPR"
                  expression="get-property('registry',$ctx:filepath)"
                  type="STRING"
                  pattern="&lt;value&gt;(.+?)&lt;/value&gt;"
                  group="1"/>
        <header name="To" expression="get-property('EPR')"/>
        <sequence key="{$ctx:symbol}"/>
        <send/>
     </inSequence>
     <outSequence>
        <send/>
     </outSequence>
  </target>
  <publishWSDL>
     ...............................
  </publishWSDL>
</proxy>
<sequence name="VISA">
    <payloadFactory>
        <format>
            .....
        </format>
        <args>
            .....
        </args>
    </payloadFactory>
    </sequence>
    <sequence name="fault">
    <log level="full">
        <property name="MESSAGE" value="Executing default 'fault' sequence"/>
        <property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
        <property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
    </log>
    <drop/>
    </sequence>
    <sequence name="AMEX">
    <payloadFactory>
        <format>
            .....
        </format>
        <args>
            ......
        </args>
    </payloadFactory>
    </sequence>
    <sequence name="main">
    <in>
        <log level="full"/>
        <filter source="get-property('To')" regex="http://localhost:9000.*">
        <send/>
        </filter>
    </in>
    <out>
        <send/>
    </out>
    <description>The main sequence for the message mediation</description>
    </sequence>
    </definitions>

1 ответ

Решение

Если кто-то позвонит вашему прокси-серверу CreditCardPaymentService, поток сообщений внутри прокси достигнет inSequence, а затем:

  1. В свойстве символа вы получаете значение результата xpath = //m0:doPayment/m0:paymentInfo/xsd:cardType, примененного во входящем сообщении.
  2. В свойстве filepath вы получаете результат конкататации строки "file:./repository/" с результатом xpath // m0: doPayment / m0: paymentInfo / xsd: cardType

  3. В свойстве EPR вы получаете значение содержимого пути к файлу внутри внутреннего реестра ESB или EI.

  4. Для заголовка To установлено значение ERP.

  5. Вы вызываете динамическую последовательность, используя значение свойства символа. Например, если значение символа равно "A", вы вызываете последовательность с именем, равным "A". В этом прокси имеется последовательность VISA и последовательность AMEX.

  6. Обе последовательности создают новое сообщение полезной нагрузки, используя посредник payloadfactory.

  7. После вызова правильной последовательности отправляющий посредник отправляет сообщение в заголовок "Кому" значения пункта назначения.

  8. Ответное сообщение попало в outSequence, и оно отправило его прокси-клиенту.

Другие вопросы по тегам