cancel
Showing results for 
Search instead for 
Did you mean: 

Restart philosophy, identical message a second time

Former Member
0 Kudos

Hi everybody,

we are discussion wether a backend system must be able to receive a message a second time or not.

The question is, if the backend system has to notice, that the message is received the second time and

should'nt process the message again.

Backgroud:

Imagine you got two receiver systems. When sending one backend is down and so you got to send the message a second time.

Thanks a lot

Regards Mario

Accepted Solutions (0)

Answers (3)

Answers (3)

stefan_grube
Active Contributor
0 Kudos

If you want to guarantee the quality of service "exactly once", the receiver of the message needs a method for checking for duplicates.

Duplicates can happen for example when the receiver stores the incoming message to the database, but when it wants to send the response (HTTP 200) the communication breaks. In this case the sender would resend the message after reconnecting, as it assumes that the receiver has not got the message.

The XI protocol, which is used for ABAP and Java proxies, provide this duplicate check. Other adapters like SOAP or HTTP do not provide EO out of the box.

Regards

Stefan

STALANKI
Active Contributor
0 Kudos

Mario,

You can re-start your message from XI when your backend fails due to some reasons.

Depending on QOS the messages are sent.If it is synchronous messages,messages are stored in SAP XI Persisitent area.You can trigger them from there.

It is the middleware respnsibility of sending it to the reciever system.If a middleware system is down and sending system sent the message then there is need for sending system to send.

However this happens on worstcase only when adapater and integration engine are down then the sending system has to resend it again.

bhavesh_kantilal
Active Contributor
0 Kudos

Mario,

Can you give more details. have not been able to follow the question.

thanks,

Regards,

Bhavesh

Former Member
0 Kudos

Hi Bhavesh, my question is not a dedicated XI question. It is more about a philosophy.

>Must a receiving backend-system notice, whether a message comes the second time in<.

Regards Mario

bhavesh_kantilal
Active Contributor
0 Kudos

Mario,

Expecting the Receiving System to check for duplication of every message would be something that is taking things a bit too far.

Say a system X is receving messages from N number of systems, and now if it were to check for the duplication of every messsge that it gets it would become a serious complexity and something that logically doesnt make the sense.

the responsibility of ensuring that duplicate messages are not sent , should lie with the sending application as it can imbibe the logic of checking for duplication while constructuiong the message itself.

just my 2 cents,

Regards,

Bhavesh

Former Member
0 Kudos

Well usually we use some middleware tool for message transfer,i think it should be the middleware that should take care of it,on one hand we cant afford to loose any information just by assuming that it might have reached safely,and on the other hand we cant check every message at the receiver site.that will be really time consuming job,so middleware tool must take care of it and if msg is not send,it should prompt the sender to send it again

thanx

ahmad

Former Member
0 Kudos

Hi ahmad,

that means

a) either the middleware has to have a persistence (database) to store information about sent messages

b) or the sender system has to hold the information where the message was send to.

In case b) the middleware has to send a message back to the sender system about the state of the message:

- message arrived at reciever system

- message arrived <b>not</b> at reciever system

Or do you see other mechnisms?

Regards Mario

Former Member
0 Kudos

hey mario

middleware need not have a persistant database,it can allocate some flags for message comin in and if that message is delivered properly that same flag should be assigned to second message in line,if the flag is still pointing to earlier message that means it wasnt sent properly and middleware can ask sender to send again

thanx

ahmad