On Mon, Apr 16, 2018 at 1:50 PM, Gordon Sim <g...@redhat.com> wrote:
> On 16/04/18 15:24, Ken Giusti wrote: > >> To reply to my own question: >> >> IMHO when sending an unsettled multicast I would expect >> 1) that all present consumers will get a copy of the message and: >> 2) that any potential consumers that are *not* present would not get a >> copy of the message (right, that's a no-brainer, but hear me out). >> 3) if any consumer signals a REJECT >> >> So I would like the router to: >> >> 1) send back a final disposition of REJECT if *any* client returned a >> REJECT. >> The spec is pretty clear that the message is considered invalid by the >> recipient >> in this case. That's a pretty big deal, since I assumed that the >> message is >> not invalid when it was sent. This could possibly indicate a bug or a >> state >> mismatch between sender and receiver. I would want to know about this. >> > > What if there are 10 consumers, and only one of them rejects it? Clearly > there is a problem, but is it the sender that is best able to react to > that? Perhaps the consumer that rejected it is at fault since all the other > consumers considered the message valid. > > What if two of the consumer reject for different reasons (i.e. with > different errors)? > > While I agree that the rejection is important information, I'm not sure > that propagating it to the sender is the necessarily the most useful way of > signalling this. Maybe some eventing scheme would actually be useful, > allowing the system to configure where to direct the information so it can > be acted upon. Failing that better control over logging of this sort of > thing. > > > This is why I feel like multicast-with-settlement is not really a useful feature. If you need to know what happens at the receivers then you need to address them individually - we don't need a complicated scheme for trying to jam multiple dispositions into one - the user needs to get multiple dispositions via simple unicast addresses. If you need decoupled messaging with store-forward delivery guarantees, then you need a broker. To me, the only time router multicast is useful is when you don't care about dispositions, and you want to send pre-settled messages on a best-effort basis to an unknown (possibly empty) set of receivers.