附錄
附錄 A: Spring Boot 相容性
| Spring Modulith 版本 | Spring Boot 版本 (編譯時使用) |
Spring Boot 版本 (示例測試時使用) |
jMolecules (編譯) |
jMolecules (測試) |
|---|---|---|---|---|
2.0 (快照) |
4.0 快照 |
4.0 快照和里程碑版本 |
2023.2 |
2023.2, 2025.0 RC2 |
1.4 |
3.5 |
3.1, 3.2, 3.3, 3.4, 3.5 |
2023.2 |
2023.2, 2025.0 RC2 |
1.3 |
3.4 |
3.1, 3.2, 3.3, 3.4, 3.5 |
2023.1 |
2023.1, 2023.2, 2025.0 RC2 |
1.2 |
3.3 |
3.1, 3.2, 3.3, 3.4 |
2023.1 |
2023.1, 2023.2, 2025.0 RC2 |
1.1 |
3.2 |
3.1, 3.2, 3.3, 3.4 |
2023.1 |
2023.1, 2023.2, 2025.0 RC2 |
附錄 B: Spring Modulith 配置屬性
| 財產 | 預設值 | 描述 |
|---|---|---|
|
|
是否為非同步處理終止配置預設值,即等待任務完成 2 秒。詳情請參閱 |
|
無 |
用於檢測應用模組的策略。可以是 |
|
|
如何將事件釋出標記為已完成。支援以下值:
|
|
|
是否啟用事件外部化。 |
|
|
是否將事件外部化序列化到代理。 |
|
|
是否初始化 JDBC 事件釋出模式。 |
|
事件釋出表的模式名稱。如果未指定,表將不進行模式限定。 |
|
|
|
是否使用遺留的事件釋出資料庫結構。 |
|
|
是否為 |
|
|
是否自動為 MongoDB 啟用事務。需要資料庫以副本集執行。 |
|
|
是否在 Neo4j 事件釋出事件雜湊屬性上建立索引。 |
|
|
是否為 |
|
|
是否在應用程式重啟時重新發布未完成的事件釋出。在多例項部署中通常不推薦,因為其他例項可能仍在處理事件。 |
|
|
我們應該檢查過期事件釋出的間隔。 |
|
|
事件釋出在處理狀態下經過多長時間被視為過期。 |
|
|
事件釋出在已釋出狀態下經過多長時間被視為過期。 |
|
|
事件釋出在重新提交狀態下經過多長時間被視為過期。 |
|
|
是否啟用 |
|
|
要釋出的事件的粒度。( |
|
|
用於確定周邊界的 |
|
|
釋出事件的日期的時區。 |
|
|
自 1.3 起已棄用。請優先使用 |
|
|
配置是否啟用模組特定的 Flyway 自定義。如果啟用,配置在應用程式中的 Flyway 例項將進行增強,以額外執行位於配置位置的模組特定子資料夾中的遷移,按模組依賴關係的順序執行。這允許測試執行僅應用實際測試執行所需的遷移。詳情請參閱此部分。 |
|
|
是否在應用程式啟動期間驗證應用程式模組的排列。需要在類路徑上包含 |
|
無 |
這可以是預定義值 |
|
無 |
用於計算已更改檔案集的提交雜湊。通常在 CI 環境中傳播,以考慮自上次成功構建以來的所有更改。 |
附錄 C: Spring Modulith 模組
| 啟動器 | 典型範圍 | 包括 |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 模組 | 典型範圍 | 描述 |
|---|---|---|
|
|
一個 Spring Boot 執行器,透過執行器公開應用程式模組結構。 |
|
|
在生產程式碼中用於自定義 Spring Modulith 預設行為的抽象。 |
|
|
一個註解處理器,用於提取 Javadoc 以包含在應用模組畫布中。 |
|
|
核心應用模組模型和 API。 |
|
|
|
|
|
AMQP 的事件外部化支援。 |
|
|
用於自定義 Spring Modulith 事件功能的 API。 |
|
|
事件釋出登錄檔的核心實現,以及整合抽象 |
|
|
|
|
|
|
|
|
JMS 的事件外部化支援。 |
|
|
|
|
|
Kafka 的事件外部化支援。 |
|
|
將事件外部化到 Spring Messaging |
|
|
|
|
|
|
|
|
基於應用模組結構的測試執行最佳化。更多詳情請參見此處。 |
|
|
此處描述的時光流逝事件實現此處。 |
|
|
此處描述的可觀測性基礎設施此處。 |
|
|
支援在執行時引導 |
|
|
整合測試支援。更多詳情請參見此處。 |
附錄 D: 事件釋出登錄檔模式
基於 JDBC 的事件釋出登錄檔支援要求資料庫中存在以下資料庫模式。如果您希望 Spring Modulith 為您建立模式,請將應用程式屬性 spring.modulith.events.jdbc-schema-initialization.enabled 設定為 true。
H2
當前模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9) WITH TIME ZONE,
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) WITH TIME ZONE NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9) WITH TIME ZONE,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9) WITH TIME ZONE,
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) WITH TIME ZONE NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
`STATUS` VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9) WITH TIME ZONE,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (COMPLETION_DATE);
舊版模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9) WITH TIME ZONE,
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) WITH TIME ZONE NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9) WITH TIME ZONE,
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) WITH TIME ZONE NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (COMPLETION_DATE);
HSQLDB
當前模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9),
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9),
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9),
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(9),
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (COMPLETION_DATE);
舊版模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9),
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION (COMPLETION_DATE);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID UUID NOT NULL,
COMPLETION_DATE TIMESTAMP(9),
EVENT_TYPE VARCHAR(512) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
PUBLICATION_DATE TIMESTAMP(9) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PRIMARY KEY (ID)
);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_LISTENER_ID_AND_SERIALIZED_EVENT_IDX ON EVENT_PUBLICATION_ARCHIVE (LISTENER_ID, SERIALIZED_EVENT);
CREATE INDEX IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX ON EVENT_PUBLICATION_ARCHIVE (COMPLETION_DATE);
MariaDB
當前模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6),
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6),
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
舊版模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
Microsoft SQL Server
當前模式
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION')
CREATE TABLE EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(MAX) NOT NULL,
PUBLICATION_DATE DATETIME2(6) NOT NULL,
COMPLETION_DATE DATETIME2(6) NULL,
STATUS VARCHAR(20) NULL,
COMPLETION_ATTEMPTS INT NULL,
LAST_RESUBMISSION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION_ARCHIVE')
CREATE TABLE EVENT_PUBLICATION_ARCHIVE
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(MAX) NOT NULL,
PUBLICATION_DATE DATETIME2(6) NOT NULL,
COMPLETION_DATE DATETIME2(6) NULL,
STATUS VARCHAR(20) NULL,
COMPLETION_ATTEMPTS INT NULL,
LAST_RESUBMISSION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
舊版模式
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION')
CREATE TABLE EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(MAX) NOT NULL,
PUBLICATION_DATE DATETIME2(6) NOT NULL,
COMPLETION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'EVENT_PUBLICATION_ARCHIVE')
CREATE TABLE EVENT_PUBLICATION_ARCHIVE
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(MAX) NOT NULL,
PUBLICATION_DATE DATETIME2(6) NOT NULL,
COMPLETION_DATE DATETIME2(6) NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
MySQL
當前模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
STATUS VARCHAR(20),
COMPLETION_ATTEMPTS INT,
LAST_RESUBMISSION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
舊版模式
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
CREATE TABLE IF NOT EXISTS EVENT_PUBLICATION_ARCHIVE
(
ID VARCHAR(36) NOT NULL,
LISTENER_ID VARCHAR(512) NOT NULL,
EVENT_TYPE VARCHAR(512) NOT NULL,
SERIALIZED_EVENT VARCHAR(4000) NOT NULL,
PUBLICATION_DATE TIMESTAMP(6) NOT NULL,
COMPLETION_DATE TIMESTAMP(6) DEFAULT NULL NULL,
PRIMARY KEY (ID),
INDEX EVENT_PUBLICATION_ARCHIVE_BY_COMPLETION_DATE_IDX (COMPLETION_DATE)
);
PostgreSQL
當前模式
CREATE TABLE IF NOT EXISTS event_publication
(
id UUID NOT NULL,
listener_id TEXT NOT NULL,
event_type TEXT NOT NULL,
serialized_event TEXT NOT NULL,
publication_date TIMESTAMP WITH TIME ZONE NOT NULL,
completion_date TIMESTAMP WITH TIME ZONE,
status TEXT,
completion_attempts INT,
last_resubmission_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS event_publication_serialized_event_hash_idx ON event_publication USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_by_completion_date_idx ON event_publication (completion_date);
CREATE TABLE IF NOT EXISTS event_publication_archive
(
id UUID NOT NULL,
listener_id TEXT NOT NULL,
event_type TEXT NOT NULL,
serialized_event TEXT NOT NULL,
publication_date TIMESTAMP WITH TIME ZONE NOT NULL,
completion_date TIMESTAMP WITH TIME ZONE,
status TEXT,
completion_attempts INT,
last_resubmission_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS event_publication_archive_serialized_event_hash_idx ON event_publication_archive USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_archive_by_completion_date_idx ON event_publication_archive (completion_date);
舊版模式
CREATE TABLE IF NOT EXISTS event_publication
(
id UUID NOT NULL,
listener_id TEXT NOT NULL,
event_type TEXT NOT NULL,
serialized_event TEXT NOT NULL,
publication_date TIMESTAMP WITH TIME ZONE NOT NULL,
completion_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS event_publication_serialized_event_hash_idx ON event_publication USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_by_completion_date_idx ON event_publication (completion_date);
CREATE TABLE IF NOT EXISTS event_publication_archive
(
id UUID NOT NULL,
listener_id TEXT NOT NULL,
event_type TEXT NOT NULL,
serialized_event TEXT NOT NULL,
publication_date TIMESTAMP WITH TIME ZONE NOT NULL,
completion_date TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id)
);
CREATE INDEX IF NOT EXISTS event_publication_archive_serialized_event_hash_idx ON event_publication_archive USING hash(serialized_event);
CREATE INDEX IF NOT EXISTS event_publication_archive_by_completion_date_idx ON event_publication_archive (completion_date);
附錄 E: 從 Moduliths 遷移
-
o.m.model.Modules已重新命名為o.s.m.model.ApplicationModules -
o.m.model.ModuleDetectionStrategy已重新命名為o.s.m.model.ApplicationModuleDetectionStrategy -
@o.m.test.ModuleTest已重新命名為@o.s.m.test.ApplicationModuleTest -
o.m.docs.Documenter.Options已重新命名為o.s.m.docs.Documenter.DiagramOptions -
元件圖的圖表樣式現在預設為
DiagramStyle.C4(透過呼叫DiagramOptions.withStyle(DiagramStyle.UML)覆蓋) -
模組畫布預設隱藏未公開的型別。要在畫布中包含應用程式模組內部型別,請將
CanvasOptions配置為….revealInternals()。 -
元件圖和應用模組畫布的輸出資料夾已從
moduliths-docs移動到位於構建目標資料夾(例如 Maven 的target)中的spring-modulith-docs。