数据传输的事务定义通常有以下三种级别:
(1)最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输
(2)最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输.
(3)精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输被
| 传输语义 | 说明 | 例子 |
|---|---|---|
| at most once | 最多一次:不管是否能接收到,数据最多只传一次。这样数据可能会丢失, | Socket, ACK=0 |
| at least once(默认) | 最少一次:消息不会丢失,如果接收不到,那么就继续发,所以会发送多次,直到收到为止,有可能出现数据重复 | ACK=1 |
| Exactly once | 精准一次:消息只会一次,不会丢,也不会重复。 | 幂等+事务+ACK=-1 |