Be careful. If the goal is to reliably deliver a message from the From
party to a To party through one or more intermediaries, the only ACK that
matters is the one from the To party's MSH when that MSH has placed the
message in a persistent store. ACKs from the intermediaries, when they
receive the message, do not accomplish anything useful because the message
may be lost at or upstream of any intermediary.
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 08/07/2001 01:01:45 AM
To: "Burdett, David" <david.burdett@commerceone.com>, "'Arvola Chan'"
<arvola@tibco.com>, ebXML Msg <ebxml-msg@lists.oasis-open.org>
cc: mwang@tibco.com
Subject: RE: T2: ackRequested attribute in Via element
David,
In your example about an intermediate hop being different, how would the
AckRequested be passed through?� Each intermediary must recreate the Via
for the next hop based upon values it receives.� Let's say we have�6 hops
and the middle hop (3-4) is MQseries so it doesn't need AckRequested.� Hop
1 sends to Hop 2 with the Via element including AckRequested=signed
(sign/unsigned doesn't matter here) and actor=next.� Hop�2 consumes the
Via header and recreates a Via with AckRequested=signed and actor=next
because that's what came to it and sends to Hop 3.� Hop 3 creates a Via
with AckRequested=none and actor=next because its hop doesn't need it and
sends to Hop 4.� How does Hop 4 know to reset AckRequested=signed before
it sends to Hop 5?� Am I missing something here?
I don't think this works.� I understand the desire to have things change
on a per hop basis but I don't think it works the way we have it now.� We
always have to leave AckRequested to the same value even if we don't need
it for some hop -- so, it doesn't need to go in Via.� This goes back to
the question of what is the difference between an Ack and a
DeliveryReceipt for single-hop?� IMO the answer is Via should not be passed
to the end and DeliveryReceipt should be the end-to-end Ack.
Why do we need AckRequested at all?� All we have to do is have
intermediate hops send back an Ack to the previous hop based on the value
of DeliveryReceiptRequested.
PROPOSAL
1.� Get rid of AckRequested.
2. �Intermediate hop sends an Ack to the previous hop based upon the value
of DeliveryReceiptRequested unless overridden by a local CPA.
3.� End node sends a DeliveryReceipt, which acts the same as an Ack, to
the sender�based upon the value of DeliveryReceiptRequested.
On the problem with unlimited messages, IMO�the observation is correct.
We should not allow�an Ack to an Error.� We should also not allow�an Ack
to an Ack or an Error to an Error.� We should still allow an Error to an
Ack(we can only allow one or the other).
David.