全域屬性
某些全域框架屬性可以透過在類別路徑上提供屬性檔案來覆寫。
預設屬性可以在 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.ID 和 MessageHeaders.TIMESTAMP 。自 4.3.2 版起。 |
7 | 不應在應用程式啟動期間自動啟動的 AbstractEndpoint bean 名稱模式(xxx* 、**xxx** 、*xxx 或 xxx*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