We might be talking over each other here. But your earlier point was about exceptions, and I've tried to answer it in that context.
Yes, most services do not guarantee idempotency. But your service could if you use the idempotency utility that Differential supplies.
If you don't care about idempotence in your service calls, you could let it re-run. I believe most service calls don't care about idempotence.
- Reading stuff from a database? It can safely be re-run.
- PUT stuff to an external source, all good.
- Creating a new resource? Well, the failure mode is no better than what your system would do with an equivalent service call via another mechanism. So you need to handle it / write it in a way that ensures idempotence / be ready not to care.
- Creating an order, or charging a credit card? Yes - that needs to be handled and can be handled with the idempotence helper.
Yes, most services do not guarantee idempotency. But your service could if you use the idempotency utility that Differential supplies.
If you don't care about idempotence in your service calls, you could let it re-run. I believe most service calls don't care about idempotence.
- Reading stuff from a database? It can safely be re-run.
- PUT stuff to an external source, all good.
- Creating a new resource? Well, the failure mode is no better than what your system would do with an equivalent service call via another mechanism. So you need to handle it / write it in a way that ensures idempotence / be ready not to care.
- Creating an order, or charging a credit card? Yes - that needs to be handled and can be handled with the idempotence helper.