摘自《SOA In Practice》
一个Service执行一次请求产生的结果,如果跟执行多次同样的请求产生的结果相同,则可以说这个Service满足了Idempotency
1. Reading Service都是Idempotent
2. "update bonus = 100 where id = 3" 是Idempotent
3. "update bonus += 100 where id =3 " 不是Idempotent --- 操作结果依赖数据原先状态的Service都不是Idempotent
为了把这种Service变成 Idempotent,应该遵守这样一种契约:Consumer的请求里应该有一个RequestId, 重发时仍然使用同样的RequestId; Provider收到请求后要将RequestId存起来,如果新请求的RequestId已经存在了,就不要再执行相应的操作。