Может кто-нибудь объяснить синтаксис и функции ниже 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="<value>(.+?)</value>"
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, а затем:
- В свойстве символа вы получаете значение результата xpath = //m0:doPayment/m0:paymentInfo/xsd:cardType, примененного во входящем сообщении.
В свойстве filepath вы получаете результат конкататации строки "file:./repository/" с результатом xpath // m0: doPayment / m0: paymentInfo / xsd: cardType
В свойстве EPR вы получаете значение содержимого пути к файлу внутри внутреннего реестра ESB или EI.
Для заголовка To установлено значение ERP.
Вы вызываете динамическую последовательность, используя значение свойства символа. Например, если значение символа равно "A", вы вызываете последовательность с именем, равным "A". В этом прокси имеется последовательность VISA и последовательность AMEX.
Обе последовательности создают новое сообщение полезной нагрузки, используя посредник payloadfactory.
После вызова правильной последовательности отправляющий посредник отправляет сообщение в заголовок "Кому" значения пункта назначения.
Ответное сообщение попало в outSequence, и оно отправило его прокси-клиенту.