RE: [ebxml-msg] Issue for your review

From
Dick Brooks <>
Date
2002-10-21T00:14:39+00:00
ID
Thread
RE: [ebxml-msg] Issue for your review
Title: Re: [ebxml-msg] Issue for your review

Michael,

 

I was 
involved in a project to develop a reliable MSH within the Energy 
industry. Reliability was accomplished by implementing the following 
logic.

 

The 
receiving MSH issues an Acknowledgement to the sender after both of the 
following are performed:

1. the message was persisted to mass storage

2. the 
to/from party id's are validated

 

If, 
for some reason, the sender doesn't receive the ACK, it assumes a failure to 
deliver and will retry sending the original message. 

 

In the 
case of a "lost ACK"; the receiving MSH, upon receiving a message 
containing a Message-ID which has been previously "acknowledged", responds 
with an Acknowledgement. Hopefully, this ACK will be received by the 
sender.  The process continues until someone on the sending end determines 
there is a problem receiving/processing ACK's.

 

Dick Brooks
Systrends, Inc
7855 South River Parkway, Suite 
111
Tempe, Arizona 85284
Web: www.systrends.com <http://www.systrends.com>
Phone:480.756.6777,Mobile:602-684-1484,eFax:240-352-0714
  

  
-----Original Message-----
From: Michael Wang 
  [mailto:]
Sent: Sunday, October 20, 2002 2:27 
  PM
To: 
Subject: Re: 
  [ebxml-msg] Issue for your review

  
I think we all agree that the sender needs to be able to 
  handle 
messages that are out of sequence.  Let's 
  set that aside. 

  
To me what needs to be clarified by the specification is 
  what 
is meant by 
  "delivered"/"dispatched"/"handed-off"/"made available" 
between layers. 

  
Let's examine Doug's scenario of receiving MSH making 
  message 
available to the application before sending 
  MSH ack.  Let's 
also assume the MSH and 
  application are completely different 
applications and 
  their communication mechanism is HTTP. 

  
At what point can the receiving MSH determines that the 
  received 
message is "made available" to the 
  application and start to send 
the MSH ack? 

  
Should it be at the point of getting a HTTP 2xx response? 
  or 
when the MSH feels it has sent the message but 
  without getting 
a 2xx?  I would think it is the 
  former. 

  
If we take the later route (which seems to be what people 
  are 
saying) then the receiving MSH may get a HTTP 500 
  AFTER it has 
sent the MSH ack back.  Now the 
  sender side thinks the receiver 
has got the message 
  but in fact receiver side does not have it!?? 

  
My original point is that MSH should not violate the rules of 
  the 
transport by ignoring the information it 
  provides.  MSH should 
not continue to the next 
  task until the "dispatched"/"made available"/ 
"delivered" rules are satisfied. 

  
Without this clarified I do not know how to interpret the 
  following 
statements made in the 2.0 spec. 

  
2116 If an AckRequested element is present (not an 
  Acknowledgment Message) 
     then 
  generate an 
2117 Acknowledgment Message in response 
  (this may be as part of another 
     message). The Receiving MSH 
2118 MUST NOT send an Acknowledgment Message until the message has 
  been 
     persisted or delivered 
  to the 
2119 Next MSH. 

  
Regards, 
-mw 

  
Christopher B Ferris wrote: 
> 
  
> I think that it is safest to state that the 
  sender can have no expectation that 
> it will 
  receive the HTTP 2xx response before the receipt of any 
  acknowledgement. 
> 
> By 
  its very definition[1], asynchronous means: 
> 
  
>  Lack of temporal concurrence; absence of 
  synchronism. 
> 
> The 
  sending of an asynchronous message need not complete, from the sender's 
  
> perspective, before the recipient sends the 
  acknowledgment. 
> 
> 
  Cheers, 
> 
> Christopher 
  Ferris 
> Architect, Emerging e-business Industry 
  Architecture 
> email:  
  
> phone: +1 508 234 3624 
> 
  
> [1] http://www.dictionary.com/search?q=asynchronous 
  
> 
> Doug Bunting 
  <> wrote on 10/18/2002 05:06:17 PM: 
> 
> > Dave, 
> > 
> > An excellent description of 
  how very little we say in the Messaging 
> > 
  specification can completely control the observed ordering of responses seen 
  at 
> > the originating server.  Your 
  example describes a real world issue resulting 
> 
  > from a clear separation of concerns between the ebXML and transport 
  layers. 
> > 
> > 
  The other case I was attempting to describe earlier involved separating 
  concerns 
> > between the application and ebXML 
  layers.  I had misread or forgotten the 
> > 
  original issue description and thought we were discussing a SyncReply / 
  
> > syncReplyMode="mshSignalsOnly" / AckRequested 
  case.  What I was describing in an 
> > 
  earlier email is an indeterminate ordering of business and MSH signals 
  or 
> > responses in this case.  The MSH 
  MUST make the incoming message available to the 
> 
  > application prior to returning (via the HTTP 200 reply if using that 
  transfer 
> > protocol) an Acknowledgment 
  message.  The MSH has no control over how quickly 
> > the application operates so business signals or responses may 
  arrive at the 
> > originating server before the 
  Acknowledgement message.  We could try to force 
> > that MSH to prevent outgoing messages including a 
  RefToMessageID pointing to the 
> > one it's 
  working on but we can't guarantee the same MSH will even be used for 
  
> > the outgoing message or close all of the race 
  conditions.  And, so... 
> > 
  
> > In both cases, we need to describe the issue so 
  originating servers do not 
> > depend upon 
  particular orderings rather than increasing the complexity of the 
  
> > receiving server to (slightly) lessen the chances 
  for ordering to follow 
> > less-than-obvious 
  patterns. 
> > 
> > 
  thanx, 
> >     doug 
  
> > 
> > Dave Elliot 
  wrote: 
> > ... 
> 
  > 
> > > Here's another real world 
  problem.  Suppose the Responder behaves as you 
> > > suggest and does not send an async EbXML Ack until the 
  transport layer 
> > > of the inbound message 
  has wrapped up.  So in effect you have this 
> 
  > > sequence:  The Responder sends HTTP 202 and then immediately 
  sends the 
> > > EbXML Ack over a different 
  DeliveryChannel (possibily different 
> > > 
  transport protocol). 
> > > 
> > > Now let us suppose that the EbXML Ack delivery protocol 
  is faster to 
> > > send and to 
  unmarshall/process than HTTP.  This means that the ebXML Ack 
  
> > > would arrive up at the Sender's EbXML Layer 
  before the Sender's HTTP 
> > > transport was 
  able to confirm to its EbXML Layer that the original 
> > > message was even sent. 
> > 
  > 
> > > Which illustrates that even if you 
  were to mandate the transport/ebXML 
> > > 
  layer sequence that the Responder must follow, the sequence may still 
  
> > > occasionally/randomly appear different to the 
  Requester.  That's why I 
> > > don't 
  think it is safe to mandate that kind of thing. 
> 
  > > 
> > > Best Regards, 
  
> > > 
> > > Dave 
  Elliot 
> > > XML Global Technologies 
  
> > > 
> > > 
  ---------------------------------------------------------------- 
  
> > > To subscribe or unsubscribe from this elist 
  use the subscription 
> > > manager: <http://lists.oasis-open.org/ob/adm.pl> 
  
> > 
> > 
> > 
  ---------------------------------------------------------------- 
  
> > To subscribe or unsubscribe from this elist use the 
  subscription 
> > manager: <http://lists.oasis-open.org/ob/adm.pl> 
  

  
---------------------------------------------------------------- 
  
To subscribe or unsubscribe from this elist use the 
  subscription 
manager: <http://lists.oasis-open.org/ob/adm.pl>