David,
If things are working right, the end of a conversation should NEVER be
controlled by persistDuration. The end of a conversation is when the
application (or conversation management middleware) says that it's the end.
If persistDuration expires before the software says that the conversation
is ended, it is killing the conversation due to an abnormal condition. I
hope that the MSH would at least have the decency to notify the upper
levels that it has killed a conversation. Once the conversation has been
killed by the MSH, no further messages should be sent with the same
conversation ID since that would confuse the heck out of the upper levels.
The possiblity of that happening means that perhaps there should be a
"start of conversation" indicator in the message header so that a receiving
MSH can distinguish between the start of a new conversation and belated
messages for conversations that it has killed.
Note also that persistDuration may have a very different time scale if we
are going to apply it to the conversationId since a conversation can last
minutes or longer (maybe even weeks), depending on what is going on in the
conversation.
All of this suggests that we would do well to leave all conversation
management, including routing of messages by conversationId, to the upper
levels. That would avoid the need to figure out how long the MSH has to
persist a conversationId.
Regards,
Marty
*************************************************************************************
Martin W. Sachs
IBM T. J. Watson Research Center
P. O. B. 704
Yorktown Hts, NY 10598
914-784-7287; IBM tie line 863-7287
Notes address: Martin W Sachs/Watson/IBM
Internet address: mwsachs @ us.ibm.com
*************************************************************************************
David Fischer <david@drummondgroup.com> on 12/03/2001 03:44:24 PM
To: SHIMAMURA Masayoshi <shima.masa@jp.fujitsu.com>, Dan Weinreb
<dlw@exceloncorp.com>, Martin W Sachs/Watson/IBM@IBMUS
cc: ebxml-msg@lists.oasis-open.org
Subject: RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
I seem to be missing something. The end of a conversation is controlled by
persistDuration, isn't it? I think the ConversationId is held in
persistent
store with the MessageId (at least in the case of MessageOrdering). Along
with,
or in, the MessageId record, there must be a persistDuration field. When
the
last message in that conversation is deleted from the persistent store
(persistDuration has passed), wouldn't the ConversationId automatically go
with
it? If there are still messages waiting because they are out of order,
would
they not also be deleted when persistDuration expires? If you are
concerned
with messages going away too quickly, then make persistDuration long.
There is nothing forbidding another later message to be sent with the
original
ConversationId but the message order would not be of concern since all the
previous messages have expired anyway.
Or, are you saying ConversationId is held somewhere else?
Regards,
David Fischer
Drummond Group.