Hello everyone,

 

I would like to implement a customized failover in synapse. 

For example :

 

###################the  synapse.xml to look like 
this####################################

 

<definitions xmlns="http://ws.apache.org/ns/synapse";>

      <registry provider="org.apache.synapse.registry.url.SimpleURLRegistry">   
  

            <parameter name="root">file:./repository/conf/registry/</parameter> 
   

            <parameter name="cachableDuration">5000</parameter>

      </registry>

      <in>

            <send>

                  <class name="org.namespace.xyz.ExtendedFailover">

                        <endpoint key="failoverendpoint.xml">

                  </class>

            </send>

      </in>

 

      <out>

            <send/>

      </out>

</definitions>

 

#####################the failoverenpoint.xml shoud be 
like:#########################

<endpoint xmlns="http://ws.apache.org/ns/synapse";>

      <failover>

            <endpoint name="add1ep">

                  <address uri="http://127.0.0.1:1/add1";>

                        <suspendDurationOnFailure>0</suspendDurationOnFailure>

                  </address>

                        

            </endpoint>

            <endpoint name="add2ep">

                  <address uri="http://127.0.0.1:2/add2";>

                        <suspendDurationOnFailure>0</suspendDurationOnFailure>

                  </address>

 

            </endpoint>

            <endpoint name="add3ep">

                  <address uri="http://127.0.0.1:3/add3";>

                        <suspendDurationOnFailure>0</suspendDurationOnFailure>

                  </address>

 

            </endpoint>

      </failover>

</endpoint>

 

#####################################the 
ExtendedFailover.java##########################

package org.namespace.xyz;

 

import org.apache.synapse.endpoints.FailoverEndpoint;

 

public class ExtendedFailoverMediator extends FailoverEndpoint{

 

      //override and reuse some methods here

 

 

}

###########################################################################################

 

I want to implement an alternate failover behaviour: on every call to the 
service it will try the first endpoint (add1) ,if that one fails, it will try 
the second one(add2). This repeats with every later calls, even if the first 
endpoint failed in the previous call. There will be a code block that uses the 
existing setActive(boolean active, MessageContext synMessageContext)method to 
set the current active endpoint, this is controlled by another component 
outside of Synapse.

And I also would like to have the possibility to sort the list of endpoints and 
write it back to the xml file in the registry. Looking at the methods provided 
by the FailoverEndpoint class, it seems I can reuse many of the existing 
methods. But where do I start?

If the ExtendedFailover class mediator derives from FailoverEndpoint and I put 
the <class ….></class> expression around the endpoint defintion block (like in 
the example above) , will this block be automatically read by the 
ExtendedFailover-Mediator like the original FailoverEndpoint would do, so that 
I can access the list of endpoints with getEndpoints()? Or do I habe to provide 
the Factory and Serializer classes for Synpase to do so?

Please give me jumpstart to do this.

 

Thank you in advance!

 

Greetings

 

Thuy

 

 

Reply via email to