全局属性

可以通过在类路径中提供属性文件来覆盖某些全局框架属性。

默认属性可以在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 中可用的线程数。请参见配置任务调度器
5 当设置为true时,到达网关回复通道的消息会在网关未预期回复(因为发送线程超时或已收到回复)时抛出异常。
6 在 header 复制操作期间不应填充到Message实例中的消息 header 名称的逗号分隔列表。此列表由DefaultMessageBuilderFactory bean 使用,并传播到用于通过MessageBuilder构建消息的IntegrationMessageHeaderAccessor实例(请参见MessageHeaderAccessor API)(请参见MessageBuilder辅助类)。默认情况下,只有MessageHeaders.IDMessageHeaders.TIMESTAMP在消息构建期间不会被复制。自 4.3.2 版起。
7 不应该在应用程序启动期间自动启动的AbstractEndpoint bean 名称模式(xxx*xxx*xxxxxx*yyy)的逗号分隔列表。您可以稍后通过其 bean 名称(通过控制总线),通过其角色(使用SmartLifecycleRoleController)(请参见端点角色)或通过Lifecycle bean 注入手动启动这些端点。您可以通过指定auto-startup XML 注解或autoStartup注解属性,或在 bean 定义中调用AbstractEndpoint.setAutoStartup()来明确覆盖此全局属性的效果。自 4.3.12 版起。
8 一个布尔标志,指示必须使用requireSubscribers选项配置默认全局errorChannel。自 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