@dmcconnell86 there is a lot of things to take into consideration:
- When do you consider messages as successfully acknowledged? When one of the subscribers received message? When all of them had? When majority did?
- Should messages be published sequentially instead of in parallel? (it means ack every subscriber before sending a message to another one until completed or first subscriber will fail)
- What about time constraints? If subscriber took 5 min to ACK the message? Will you wait for it so long?
- If subscriber won't receive a message within provided timeout - what will you do? Consider it as a NACKed? Try to resend a message? If so, how many times or for how long until you give up?
- If you will resend the messages, it may turn out, that the one of the subscribers got the same message twice (or more). Will you require it to be idempotent? Will you try to provide some deduplication mechanism? If so, how many messages can be received between two duplicates to still be able to recognize them?
- What if publisher node has gone down before getting all ACKs? When it will get up, do you consider published message as failed? What if all subscribers have ACKed but published didn't get an ACK?
Those are questions, that need an answer and for every person reliable distributed delivery may mean something else.