全域屬性

某些全域框架屬性可以透過在類別路徑上提供屬性檔案來覆寫。

預設屬性可以在 org.springframework.integration.context.IntegrationProperties 類別中找到。以下清單顯示預設值

spring.integration.channels.autoCreate=true (1)
spring.integration.channels.maxUnicastSubscribers=0x7fffffff (2)
spring.integration.channels.maxBroadcastSubscribers=0x7fffffff (3)
spring.integration.taskScheduler.poolSize=10 (4)
spring.integration.messagingTemplate.throwExceptionOnLateReply=false (5)
spring.integration.readOnly.headers= (6)
spring.integration.endpoints.noAutoStartup= (7)
spring.integration.channels.error.requireSubscribers=true (8)
spring.integration.channels.error.ignoreFailures=true (9)
spring.integration.endpoints.defaultTimeout=30000 (10)
1 若為 true,當未在應用程式內容中明確找到 input-channel 實例時,會自動將其宣告為 DirectChannel 實例。
2 設定允許在 DirectChannel 等通道上的預設訂閱者數量。它可用於避免意外地將多個端點訂閱到同一個通道。您可以透過設定 max-subscribers 屬性來覆寫個別通道上的此設定。
3 此屬性提供允許在 PublishSubscribeChannel 等通道上的預設訂閱者數量。它可用於避免意外地將超出預期數量的端點訂閱到同一個通道。您可以透過設定 max-subscribers 屬性來覆寫個別通道上的此設定。
4 預設 taskScheduler bean 中可用的執行緒數。請參閱 設定 Task Scheduler
5 true 時,當閘道器未預期回覆時(因為傳送執行緒已逾時或已收到回覆),到達閘道器回覆通道的訊息會擲回例外狀況。
6 不應在標頭複製操作期間填入 Message 實例中的訊息標頭名稱的逗號分隔清單。此清單由 DefaultMessageBuilderFactory bean 使用,並傳播到 IntegrationMessageHeaderAccessor 實例(請參閱 MessageHeaderAccessor API),用於透過 MessageBuilder 建構訊息(請參閱 MessageBuilder 輔助類別)。依預設,訊息建構期間僅複製 MessageHeaders.IDMessageHeaders.TIMESTAMP。自 4.3.2 版起。
7 不應在應用程式啟動期間自動啟動的 AbstractEndpoint bean 名稱模式(xxx***xxx***xxxxxx*yyy)的逗號分隔清單。您可以稍後透過 控制匯流排(請參閱 控制匯流排)、透過 SmartLifecycleRoleController 的角色(請參閱 端點角色)或透過 Lifecycle bean 注入,依其 bean 名稱手動啟動這些端點。您可以透過指定 auto-startup XML 註解或 autoStartup 註解屬性,或透過在 bean 定義中呼叫 AbstractEndpoint.setAutoStartup(),明確覆寫此全域屬性的效果。自 4.3.12 版起。
8 布林旗標,指示預設全域 errorChannel 必須使用 requireSubscribers 選項進行設定。自 5.4.3 版起。如需更多資訊,請參閱 錯誤處理
9 布林旗標,指示預設全域 errorChannel 必須忽略分派錯誤並將訊息傳遞給下一個處理器。自 5.5 版起。
10 端點中請求和回覆逾時的預設毫秒數。預設值為 30 秒,以避免無限期封鎖。可以設定為負值,以還原端點中的無限期封鎖行為。自 6.2 版起。

這些屬性可以透過將 /META-INF/spring.integration.properties 檔案新增至類別路徑,或為 org.springframework.integration.context.IntegrationProperties 實例新增 IntegrationContextUtils.INTEGRATION_GLOBAL_PROPERTIES_BEAN_NAME bean 來覆寫。您無需提供所有屬性,只需提供您想要覆寫的屬性即可。

從 5.1 版開始,當 org.springframework.integration 類別啟用 DEBUG 邏輯層級時,所有合併的全域屬性都會在應用程式內容啟動後列印在記錄中。輸出看起來像這樣

Spring Integration global properties:

spring.integration.endpoints.noAutoStartup=fooService*
spring.integration.taskScheduler.poolSize=20
spring.integration.channels.maxUnicastSubscribers=0x7fffffff
spring.integration.channels.autoCreate=true
spring.integration.channels.maxBroadcastSubscribers=0x7fffffff
spring.integration.readOnly.headers=
spring.integration.messagingTemplate.throwExceptionOnLateReply=true
spring.integration.endpoints.defaultTimeout=30000