Статьи

Обработка ошибок конечных точек WSO2 ESB

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

Сбои конечной точки

Сбои конечной точки

Вот консоль 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>

Вот из попробовать

образ