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 queueamqpproxy
works consumer rabbitmq queue (via rabbitmq transport), consumed messages send http endpointsampleendpoint
everything works fine except 1 scenario:
- my backend service set in
sampleendpoint
goes down. 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]
my backend service recovers , available
- 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&rabbitmq.server.port=5672&rabbitmq.queue.name=queue&rabbitmq.queue.routing.key=route&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
Post a Comment