rabbitmq - WSO2 ESB: Address endpoint does not resume sending after backends recovery -


i using wso2 esb rabbitmq, have 2 proxy services:

  • amqpproducersample, receives messages via http transport , send rabbitmq queue
  • amqpproxy works consumer rabbitmq queue (via rabbitmq transport), consumed messages send http endpoint sampleendpoint

everything works fine except 1 scenario:

  1. my backend service set in sampleendpoint goes down.
  2. new messages arrives , published via amqpproducersample, delivery fails (that expected because backend down). in console can see:

    warn - connectcallback connection refused or failed : mfb.localhost/127.0.0.1:80 warn - faulthandler error_code : 101503 warn - faulthandler error_message : error connecting end warn - faulthandler error_detail : error connecting end warn - faulthandler error_exception : null warn - faulthandler faulthandler : endpoint [sampleendpoint] 
  3. my backend service recovers , available

  4. new messages arrives , published via amqpproducersample endpoint does not receive message more. works fine if number of undelivered messages below 5. in case messages delivered backend service. delivery stops working after 5 (five) undelivered messages.

how solve this? there option need set or change make work time?

i using wso2 esb 4.8.1

below full config:

<?xml version="1.0" encoding="utf-8"?> <definitions xmlns="http://ws.apache.org/ns/synapse">     <registry provider="org.wso2.carbon.mediation.registry.wso2registry">         <parameter name="cachableduration">15000</parameter>     </registry>     <proxy name="amqpproxy"            transports="rabbitmq"            startonload="true"            trace="enable">         <description/>         <target>             <insequence>                 <log level="full"/>                 <property name="out_only" value="true"/>                 <property name="force_sc_accepted" value="true" scope="axis2"/>                 <send>                     <endpoint key="sampleendpoint"/>                 </send>             </insequence>         </target>         <parameter name="rabbitmq.queue.name">queue</parameter>         <parameter name="rabbitmq.connection.factory">amqpconnectionfactory</parameter>         <parameter name="rabbitmq.exchange.name">exchange</parameter>         <parameter name="rabbitmq.queue.routing.key">route</parameter>     </proxy>     <proxy name="amqpproducersample"            transports="http"            startonload="true"            trace="disable">         <description/>         <target>             <insequence>                 <property name="out_only" value="true"/>                 <property name="force_sc_accepted" value="true" scope="axis2"/>                 <property name="no_keepalive" value="true" scope="axis2"/>                 <send>                     <endpoint>                         <address uri="rabbitmq:/amqpproxy?rabbitmq.server.host.name=localhost&amp;rabbitmq.server.port=5672&amp;rabbitmq.queue.name=queue&amp;rabbitmq.queue.routing.key=route&amp;rabbitmq.exchange.name=exchange"/>                     </endpoint>                 </send>             </insequence>             <outsequence>                 <send/>             </outsequence>         </target>     </proxy>     <endpoint name="sampleendpoint">         <address uri="http://mfb.localhost/">             <timeout>                 <duration>1000</duration>                 <responseaction>discard</responseaction>             </timeout>             <suspendonfailure>                 <errorcodes>-1</errorcodes>                 <progressionfactor>1.0</progressionfactor>             </suspendonfailure>             <markforsuspension>                 <errorcodes>-1</errorcodes>             </markforsuspension>         </address>     </endpoint>     <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="main">         <in>             <log level="full"/>             <filter source="get-property('to')" regex="http://localhost:9000.*">                 <send/>             </filter>         </in>         <out>             <send/>         </out>         <description>the main sequence message mediation</description>     </sequence> </definitions>  

this known bug there in esb 4.8.1 fresh pack. later on have fixed it. recommend switch esb 4.9.0 release issue fixed.

[1] https://docs.wso2.com/display/esb490/downloading+the+product


Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -