Class S3FileJournal
java.lang.Object
io.leandev.appfuse.file.s3.S3FileJournal
- All Implemented Interfaces:
FileJournal
S3 的 FileJournal 實作
S3 物件不支援 append,故採「一筆事件一個物件」(append-safe):
{keyPrefix}/journal/{partition}/{epochMillis}-{uuid}
物件內容為 JournalLineCodec 序列化的單行。readEntries 以 ListObjectsV2 列出後逐一 GET。
-
Nested Class Summary
Nested Classes -
Method Summary
Modifier and TypeMethodDescriptionstatic S3FileJournal.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 清單(無資料時回傳空清單)
-