hi,
Right now in a failover scenario Synapse will try to re-send the message to
the next available active endpoint ( this depend on the failover algorithm
in use). For example if the 1st endpoint receives a timeout error or a
connection refused error Synapse will try to send the message to the next
available endpoint. There are requirements in which case if we receive a
particular error( for ex: a connection timeout) from the 1st endpoint we
don't want to try the second available endpoint but just drop the message(or
send a fault back). For ex: in a failover scenario we'll need to drop the
message without trying the 2nd endpoint if we receive a connection timeout
error but we'll need to try the next available endpoint if we receive a
connection refused error. Right now Synpase doesn't have this capability.

So I'd like to suggest the following configuration for leaf
endpoints(Address/WSDL) which only be valid in a failover scenario. The new
configuration element will go same level as timeOut, markForSuspension
elements.

<failedMessage>
        <errorCodes>comma separated list of error codes</errorCode>
        <action> discard | fault </action>
</failedMessage>

erroCodes - Upon receiving this erroCodes the action will be performed.
Possible values can be same as errorCodes in  markForSuspension or
suspendOnFailure.
action - The action to perform upon receving one of the errorCodes from the
endpoint. May be we can drop the message or send a fault back.

Your comments are welcome.

Rajika

Reply via email to