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
