如何定义有状态操作的幂等行为?

时间:2015-08-27 23:53:13

标签: java rest http idempotent

在一些情况下,人们声称某些东西是“幂等的”,因为它在内存中并不是有状态的,即使它的消费者效应是记录交易。

如果读取功能不必是幂等的,getNextIterator()是一种读取功能,它不是幂等的,因为它会增加迭代器。由于请求会创建审计日志,因此余额的银行请求将不是幂等的。两个后续调用的返回结果可能相同(如果没有发生更改),但日志条目会有所不同。

1 个答案:

答案 0 :(得分:2)

说"日志的创建意味着它不是无状态的"太荒谬了。是对服务器的调用,什么都不做"有状态"因为使用了少量的电力,因此本月的电费将比未拨打电话的情况稍微高一点?否。

有状态包括与事务有关的所有方面(内存中,持久存储,对其他服务的调用等)。 "幂等"意味着可以重试呼叫而不会产生副作用。

如果没有改变呼叫的业务影响或其对呼叫者的响应,那么勾选计数器的示例仍可被视为幂等的。

对于有关业务流程没有任何实际影响并且未向呼叫者公开的呼叫内部的更改与呼叫者无关。