Этот пост иллюстрирует обработку ошибок в 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>
Вот из попробовать