天天看點

Persistence Query for LevelDB

EventEnvelope提供每個事件相應的序列号

隻要建立新的persistenceIds,LevelDB寫日志就會通知查詢端,并且此查詢中不包含定期輪詢或批處理。

NoOffset檢索具有給定标記的所有事件

或通過指定序列偏移來檢索所有事件的子集。偏移量對應于特定标簽的有序序列号。請注意,EventEnvelope中提供了每個事件的相應偏移量,這使得可以在稍後的點從給定偏移量恢複流。

偏移量是唯一的,即具有完全相同序列号的事件不會被包括在傳回的流中。這意味着您可以使用EventEnvelope中傳回的偏移量作為後續查詢中的偏移量參數。

除了偏移量外,EventEnvelope還為每個事件提供了persistenceId和sequenceNr。 sequenceNr是持久化actor的序列号,持久化actor持有該事件。 persistenceId + sequenceNr是事件的唯一辨別符。

傳回的事件流按偏移量(标簽序列号)排序,對應的順序與寫入日志存儲事件的順序相同。傳回查詢的多個執行相同的流元素(以相同的順序)。删除的事件不會從标記的事件流中删除。

使用deleteMessages(toSequenceNr)删除的事件不會從“标記的流”中删除。

LeveldbReadJournal的配置
akka.persistence.query.journal.leveldb {
   #LevelDB ReadJournalProvider的實作類
   class =“akka.persistence.query.journal.leveldb.LeveldbReadJournalProvider”
  
   #寫入日志插件配置條目的絕對路徑
   #查詢日志将連接配接到。 那必須是LeveldbJournal或SharedLeveldbJournal。
   #如果未定義(或“”),它将連接配接到預設的日志,按照
   #akka.persistence.journal.plugin屬性。
   write-plugin =“”
  
   #LevelDB寫日志盡快通知查詢方
   #是持久的,但出于效率原因,查詢端檢索事件
   批量#有時可以延遲到配置的`refresh-interval`。
   refresh-interval = 3s
  
   #在一個查詢(重放)中提取多少個事件,并保持緩存直到它們
   #向下遊傳遞。
max-buffer-size = 100