OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-transport message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Subject: Re: Reliable Messaging over Synchronous Transports

To me, this makes a lot of sense.  In fact, these cases are covered by the
tpaML proposal.

I believe that for the asynchronous case, the informative text should
recommend that the original message be persisted before the acknowledgment
message is sent.  This should be done whether the acknowledgement is at the
transport level or at the message service level (message type
"acknowledgment). Otherwise, the message could be lost at the recipient
even though the acknowledgment message was sent.

It appears that where two businesses have HTTP server capability and are
performing asynchronous exchanges with HTTP, there could be two levels of
acknowledgment before the business response is sent, thus:

   HTTP POST from A to B
   HTTP response from B to A (simple acknowledgment)
   Messaging Service acknowledgment from B to A (message type
   HTTP POST from B to A carrying the business response (message type
   HTTP response from A to B (simple acknowledgment)
   Messaging Service acknowledgment from A to B

If I am right, it would seem that the messaging service specification
should recommend that the MS acknowledgment not be used when an
acknowledgment is provided at the transport level.



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

"Burdett, David" <david.burdett@commerceone.com> on 09/05/2000 05:46:17 PM

To:   "ebXML Transport (E-mail)" <ebxml-transport@lists.ebxml.org>
Subject:  Reliable Messaging over Synchronous Transports


Last week Chris and I got into a debate over supporting the reliable
messaging needs for IOTP. At the end of last week Chris and I discussed
on the phone and agreed that what we were talking about was the need to do
reliable messaging over synchronous transports. The rest of this email
provides a usecase that explains why using the message that contains the
business response as an acknowledgement is needed for synchronous

Chris, I've mis-represented anything please let us all know.


This use case describes a situation where:
*    a small business has PC running:
*    their "enterprise software" e.g. QuickBooks, and
*    a web browser (http client)
*    the business wants to use QuickBooks to make an immediate payment to
their bank by:
*    sending a payment request, and then
*    receiving an immediate  payment response that contains a receipt
that proves that payment was, or will be made
*    they want to send the payment request **reliably** using "at most
once" delivery semantics since:
*    the need to know that the payment was made by a specific time to
meet a business requirement (this means email would be too slow)
*    they don't want to pay twice because of accidental duplicate
delivery of the payment request message by the data communications protocol

In addition:
*    the bank's payment service operates in real time and can provide
immediate acknowledgement that the payment has (or will be) paid by a
specific time.
*    the small business does not want to operate their own web server as
they see no business benefit in doing so.

1. Email is too slow to meet the business requirement. Therefore the only
viable data communications protocol that will be fast enough and is widely
available is HTTP.

2. The small business can only, therefore, access their banking service via
an http client. This means that:
*    the banking service cannot later "push" a payment response message
asynchronously back to small business (remember email is too slow), and
*    the banking service has to send the payment response on an HTTP
response that is a result of an earlier HTTP post.

3. There are two ways in which the payment response could be delivered on
HTTP response:
*    the small bussiness keeps sending HTTP posts to the banking service
to check if the payment had been made, eventually it will be and so the
response will contain the result, or
*    the payment response is sent on the HTTP response for the HTTP post
that contained the payment request.

4. Since the banking service can provide an immediate response to the
payment request, the best way for the banking service to send the payment
response is on the HTTP response to the HTTP post that contained the

Once the payment response is received, it means that small business can
conclude that the payment response was received and has been actioned. No
other acknowledgement is necessary from either a business or technical
of view.

Reliable messaging can then be achieved with the following logic (note this
is only an outline) ....
1. If the small business does not receive a payment response within a
defined period then there is a "timeout" and the original payment request
2. If the banking service receives a duplicate message then it knows to:
  a) send back a copy of the response previously sent, but otherwise ...
  b) completely ignore the payment request and not re-process it

This is the same logic as is used when doing reliable messaging over
asynchronous links with "acks". In this case ...
1. If an acknowledgment message is not received within a defined period
there is a "timeout" and the original message is resent
2. If the receiving service receives a duplicate normal message then it
knows to:
  a) send back a copy of the acknowledgement previously sent, but otherwise
  b) completely ignore the message and not re-process it

So all we need to do to support both synchronous and asynchronous
in the current spec is to allow ebXML messages with a MessageType of
"Normal" to act as an acknowledgement for an earlier "Normal" message, and
use the "RefToMessageId" to identify that it is a response. Note that this
would be an additional alternative to using an acknowledgement -
acknowledgement messages are still needed.

Chris and I concluded that perhaps the best way to go forward was to alter
the spec as follows:
1. In the normative part of the spec, allow a Message Type of either
"Acknowledgement" or "Normal" act as the proof of receipt of an earlier
"Normal" message.
2. Include in a non-normative appendix, guidelines on when each type of
acknowledgement should be used, esentially:
  a) use a separate acknowledgement message when asynchronous messaging was
possible (either over HTTP or SMTP)
  b) using the message carrying the business response as the
acknowledgeement if synchronous messaging was being used.

Does this make sense?


Product Management, CommerceOne
4400 Rosewood Drive 3rd Fl, Bldg 4, Pleasanton, CA 94588, USA
Tel: +1 (925) 520 4422 (also voicemail); Pager: +1 (888) 936 9599
mailto:david.burdett@commerceone.com; Web: http://www.commerceone.com

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Search: Match: Sort by:
Words: | Help

Powered by eList eXpress LLC