Этот пост иллюстрирует обработку ошибок в wso2 esb в отношении конечных точек. Это тема импорта, потому что WSO2 Enterprise Service Bus должна отправить сообщение поставщику услуг на его заключительной стадии.
Usecase One:
Пример прокси-сервера WSO2 ESB указывает на конечную точку, время которой может истечь. Прокси должен дать пользователю правильное правильное сообщение относительно истечения времени ожидания, а не ложного сообщения. Ответное сообщение можно настроить в зависимости от кода ошибки.
1. Создайте конечную точку (веб-сервисы, которые будут превышать время ожидания) и разместите ее. (Я использую wso2 AS для размещения служб времени ожидания)
2. Создайте прокси, который является конечной точкой
<proxy xmlns="http://ws.apache.org/ns/synapse" name="TimeoutProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
<target faultSequence="fault">
<outSequence>
<log>
<property name="Out Sequence Testing " value="=============In Out Sequence============"/>
</log>
<send/>
</outSequence>
<endpoint>
<address uri="http://localhsot:9763/services/TimeoutService/">
<timeout>
<duration>1000</duration>
<responseAction>discard</responseAction>
</timeout>
</address>
</endpoint>
</target>
<description></description>
</proxy>
3. Перейдите в «Домашняя страница> Управление> Служебная шина> Последовательности» и нажмите на ссылку «Изменить последовательность ошибок».
4. Обновите его с помощью кода ниже
<sequence xmlns="http://ws.apache.org/ns/synapse" name="fault">
<property xmlns:ns="http://org.apache.synapse/xsd" name="ErrorCode" expression="get-property('ERROR_CODE')" scope="default" type="INTEGER"/>
<log level="custom">
<property name="failS" value="=======False Sequence==========="/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="testCode" expression="$ctx:ErrorCode"/>
</log>
<switch xmlns:ns="http://org.apache.synapse/xsd" source="$ctx:ErrorCode">
<case regex="303001">
<log>
<property name="go" value="==== 303001 ==== Error msg transformation"/>
</log>
</case>
<case regex="101503">
<log>
<property name="go" value="==== 101503 ==== Error msg transformation"/>
</log>
</case>
</switch>
<drop/>
</sequence >
НОТА
Транспортные коды ошибок
Сбои конечной точки
Вот консоль wso2 ESB
5. Вы можете переключаться в зависимости от вашего кода ошибки или действия
<property xmlns: ns = «http: //org.apache.synapse/xsd» name = «Action» expression = «get-property (‘Action’)» />
Или
<property xmlns: ns = «http: //org.apache.synapse/xsd» name = «ErrorCode» expression = «get-property (‘ERROR_CODE’)» scope = «default» type = «INTEGER» />
6. Скорее регистрация Мы должны получить ответное сообщение, где пользователь может понять, что произошло.
Вот пример сообщения для этого кода ошибки 101503
<getBusRootResponse xmlns="">
<error>
<errorCode>101503</errorCode>
<errorMsgTitle>Network Connection Failure</errorMsgTitle>
<errorMsg>We are unable to get Connection to BusRoot Services</errorMsg>
</error>
</getBusRootResponse>
Добавьте полезную нагрузку для каждого случая и создайте свое сообщение или добавьте свойство, в каждом случае есть подробные сведения о сообщении, которые будут показаны
7. Удалить заголовок «TO»
8. Добавить свойство «ОТВЕТ» как «истина»
9. Заменить Дроп на Отправить
Вот последовательность ошибок
<sequence xmlns="http://ws.apache.org/ns/synapse" name="fault">
<log level="full"/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="ErrorCode" expression="get-property('ERROR_CODE')" scope="default" type="INTEGER"/>
<log level="custom">
<property name="failS" value="=======False Sequence==========="/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="testCode" expression="$ctx:ErrorCode"/>
<property xmlns:ns="http://org.apache.synapse/xsd" name="Action" expression="get-property('Action')"/>
</log>
<switch xmlns:ns="http://org.apache.synapse/xsd" source="$ctx:ErrorCode">
<case regex="303001">
<log>
<property name="go" value="==== 303001 ==== Error msg transformation"/>
</log>
<payloadFactory>
<format>
<getBusRootResponse xmlns="">
<error>
<errorCode>301503</errorCode>
<errorMsgTitle>EndPoint Connection Failure</errorMsgTitle>
<errorMsg>We are unable to get Connection to BusRoot Services Provider</errorMsg>
</error>
</getBusRootResponse>
</format>
</payloadFactory>
</case>
<case regex="101503">
<log>
<property name="go" value="==== 101503 ==== Error msg transformation"/>
</log>
<payloadFactory>
<format>
<getBusRootResponse xmlns="">
<error>
<errorCode>101503</errorCode>
<errorMsgTitle>Network Connection Failure</errorMsgTitle>
<errorMsg>We are unable to get Connection to BusRoot Services</errorMsg>
</error>
</getBusRootResponse>
</format>
</payloadFactory>
</case>
</switch>
<header name="To" action="remove"/>
<property name="RESPONSE" value="true"/>
<send/>
</sequence>
Вот из попробовать






