簡體   English   中英

Akka的事件總線是否保證消息順序?

[英]Does Akka's event bus guarantee message order?

我想保留事件進入公交車的順序。 例如,如果event1然后event2輸入到總線,那么訂閱的actor將按順序獲取它們。

問題是如果這種順序是保證的,無論是在集群節點還是單節點演員系統上。

如果您在actor系統( system.eventStream )上使用事件流,並且如果您可以保證單個線程正在發布,那么是,將保留該順序。 事件總線的子通道分類風格(與system.eventStream綁定的類型)非常簡單。 有一個基本類類型的Map到訂閱actor的列表。 發布事件時,它會從Map (如果有)獲取匹配的訂戶列表,然后將消息發送給每個訂閱者。 因此,如果只有一個線程正在調用publish ,那么它需要完成發布event1(從而將其傳遞給所有訂閱者的郵箱),然后再轉到event2。 Actors按照收到郵件的順序處理郵箱(除非您使用的是自定義PriorityMailbox impl),所以先進先出。

當然,如果你有多個線程,我不能保證這個順序處理,因為thread1可能首先啟動發布,但是線程2可能首先完成它,導致你不按順序考慮。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM