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