Class SftpFileJournal
java.lang.Object
io.leandev.appfuse.file.sftp.SftpFileJournal
- All Implemented Interfaces:
FileJournal
SFTP 的 FileJournal 實作
寫入採「一筆事件一個檔案」:
{basePath}/journal/{partition}/{epochMillis}-{uuid}
檔案內容為 JournalLineCodec 序列化的單行。
上述檔名僅是寫入策略,不是讀取格式限制。readEntries(String) 會列出 partition 目錄下的項目,
並逐檔、逐行交由 JournalLineCodec 解析,因此也能讀取
LocalFileJournal 寫入的每日多行 .log。雙向互讀的前提是
Local 與 SFTP 指向同一個實體 journal root。
連線參數與 SftpFileStorage 相同(共用同一 SshClient)。
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic SftpFileJournal.Builderbuilder()列出所有有日誌的 partition,供FileOrphanSweepTask逐區對帳readEntries(String partition) 讀取指定 partition 的所有事件,供FileOrphanSweepTask對帳使用voidrecord(JournalEntry entry) 記錄一筆檔案交易事件(append-only,不得拋出例外中斷業務流程)
-
Method Details
-
builder
-
record
Description copied from interface:FileJournal記錄一筆檔案交易事件(append-only,不得拋出例外中斷業務流程)- Specified by:
recordin interfaceFileJournal- Parameters:
entry- 事件
-
readEntries
Description copied from interface:FileJournal讀取指定 partition 的所有事件,供FileOrphanSweepTask對帳使用- Specified by:
readEntriesin interfaceFileJournal- Parameters:
partition- 儲存分區鍵- Returns:
- 事件清單(依時間排序;無資料時回傳空清單)
-
partitions
Description copied from interface:FileJournal列出所有有日誌的 partition,供FileOrphanSweepTask逐區對帳- Specified by:
partitionsin interfaceFileJournal- Returns:
- partition 清單(無資料時回傳空清單)
-