消息传递
消息本身要求是什么?是否必须可以序列化?
消息传递根据传递的要求严格程序依次分为三类,
1.至多一次到达 至消息最多一次传递到目的端,消息可能会丢失,但不会重复
2.至少一次到达 潜在可能存在多次尝试在传送一次消息的时候,这种情况下,消息不会丢失,至少一次
3.有切只有一次到达 表述很明确,消息有且仅有一次被传递到目的端.
Akka采用第一种试,成本最低性能最好.使用它的fire-forget模式不需要保持发送消息的状态.
至少一次的模式,需要考虑到传输丢失,这需要发送端保持发送消息的状态,而且还需要接收端在接收到消息
之后发送确认.
精确一次的模式,这种成本最高,同时性能最差,为了保持至少一次,接收端也需要保持消息的状态,以避免重复.
保证到达还不能是领域层面的保证,因为业务不同,含义也会不同.
所以只有应用程序自己才知道什么是真正的到达,这样才能做到真正含义上的保证.
也正是这个原因,akka把这个保证的任务下放到应用程序自己,你可以控制数据是至少一次到达或精确一次.