Hi Lars,

First of all sorry for the late reply.

On Sun, Feb 19, 2012 at 7:35 PM, Lars-Erik Helander <[email protected]>wrote:

> Hi,
> I have a client and service that both are RM enabled. I want to put
> Synapse in between the two to perform some transformation of the message
> data, but wants to keep the RM characteristics of the exchange.
>
> Is this possible?
>

Yes.


> Do I have to explicitly enable RM on the Proxy Service and Endpoint in
> Synapse, or do Synapse by default pass on the RM related info between the
> client and the service?
>

You have to explicitly set RM at both ends, i.e. on the proxy service as
well as on the endpoint. Default behaviour of Synapse is to assume that the
RM is terminated at the receiving side, unless otherwise specified for the
out going endpoint too.


>
> If I enable RM on the proxy and endpoint (which I guess will create two
> different RM associations: client <-> synapse and synapse <-> service)


You're correct.


> is there a risk that the RM characteristics are violated compared to the
> RM characteristics of a direct association between the client and service?
>

As far as the complete transaction is concerned, it will not, as Synapse
deals with the RM sequences etc and adheres to the specification on
sequence messages and transaction initiation and termination as a proxy.
However as you have figured out, the actual message transmission happens in
2 transactions.

The reliability is guaranteed as the sequence acknowledgement etc are sent
back to client only after getting the same from the back-end server etc and
if synapse failed to deliver the ACK within the timeout (could be due to
failure in sending the request, or back-end server not being able to send
back the ACK on-time) it is the responsibility of the client to resend and
so forth.

So from the clients perspective it is giving an end-2-end reliability.
There is a case where this could fail too, if Synapse fails or crashes
after receiving the signals like ACK etc from the back-end server, before
sending the same back to the client, in this case the resend should be
discarded from the server and completes the transaction.

Thanks,
Ruwan


>
> Kind Regards
> Lars




-- 
Ruwan Linton
Member, Apache Software Foundation; http://www.apache.org
Director of Engineering; http://adroitlogic.org

phone: +94 11 282 7532
email: [email protected]; cell: +94 77 341 3097
blog: http://blog.ruwan.org
linkedin: http://www.linkedin.com/in/ruwanlinton
google: http://www.google.com/profiles/ruwan.linton
tweet: http://twitter.com/ruwanlinton

Reply via email to