Hi Ruwan

Thank you very much for the answer. It provided exactly the type of
information I was looking for.

Regarding:
>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.

I guess that synapse (when it has recovered) is not aware of the
history, but will be able to pick up according to the resends
initiated by the client, correct ?

The back-end server needs to be able to reproduce any previously sent
ACKs, either by being idempotent or in some other way deal with this
"internally".
I also guess that you might be able to manage the necessary persitency
for these  ACKs by having a persistent queue in the flow between the
back-end server and synapse, but that would require some explicit
logic for this in the synapse in/out-sequences.


Thanks

Lars
2012/2/27 Ruwan Linton <[email protected]>:
> 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