Can someone verify the below assumptions are correct in regards to outbox and custom idempotent code:
Assumption 1: Scenario : 2 endpoints with outbox enabled
When Endpoint A sends a message to Endpoint B outbox is only able to perform de-duplication and guarantee exactly-once processing if the business/application logic interacts with the same transactional store as the outbox ( sql server in this example ). If the business/application logic of the handler communicates with s3 to add a file then outbox is unable to help with de-duplication and it’s up to the developer to write idempotent code. If so it sounds like in the real world it’s unlikely for outbox to the the silver bullet for de-duplication in an endpoint and there is going to be a mixture of using outbox for certain handlers and certain handlers will require custom idempotence logic. Is this correct?
Assumption 2: Scenario : 2 endpoints with outbox enabled
If you have outbox enabled on an endpoint and the handler isn’t transactional with the outbox you can still benefit from deterministic id’s being generated automatically for you for outgoing messages but as stated above if the outgoing messages go to a handler that is not transactional the handler MUST be idempotent. Is this correct?