1. 程式人生 > >akka消息傳遞

akka消息傳遞

程序 任務 序列化 目的 模式 序列 同時 應用 情況

消息傳遞 
消息本身要求是什麽?是否必須可以序列化?
消息傳遞根據傳遞的要求嚴格程序依次分為三類,
1.至多一次到達 至消息最多一次傳遞到目的端,消息可能會丟失,但不會重復
2.至少一次到達 潛在可能存在多次嘗試在傳送一次消息的時候,這種情況下,消息不會丟失,至少一次
3.有切只有一次到達 表述很明確,消息有且僅有一次被傳遞到目的端.
Akka采用第一種試,成本最低性能最好.使用它的fire-forget模式不需要保持發送消息的狀態.
至少一次的模式,需要考慮到傳輸丟失,這需要發送端保持發送消息的狀態,而且還需要接收端在接收到消息
之後發送確認.
精確一次的模式,這種成本最高,同時性能最差,為了保持至少一次,接收端也需要保持消息的狀態,以避免重復.

保證到達還不能是領域層面的保證,因為業務不同,含義也會不同.
所以只有應用程序自己才知道什麽是真正的到達,這樣才能做到真正含義上的保證.
也正是這個原因,akka把這個保證的任務下放到應用程序自己,你可以控制數據是至少一次到達或精確一次.

akka消息傳遞