Global Properties

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

默认属性可以在 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 中可用的线程数。参见 Configuring the Task Scheduler
5 true 时,当网关未预期回复时(因为发送线程已超时或已收到回复),传送到网关回复频道的消息会引发异常。
6 在一个标头复制操作期间不应填充到 Message 实例中的消息标头名称的逗号分隔列表。该列表由 DefaultMessageBuilderFactory bean 使用,并传播到用于通过 MessageBuilder 构建消息的 IntegrationMessageHeaderAccessor 实例(参见 The MessageBuilder Helper Class)。默认情况下,在消息构建期间仅 MessageHeaders.IDMessageHeaders.TIMESTAMP 不被复制。自 4.3.2 版本起。
7 不应该在应用程序启动期间自动启动的 AbstractEndpoint bean 名称模式(xxx*xxx, *xxxxxx*yyy)的逗号分隔列表。你可以通过 bean 名称通过 Control Bus 手动启动这些端点(参见 Control Bus),通过带有 SmartLifecycleRoleController 的角色(参见 Endpoint Roles),或通过 Lifecycle bean 注入。通过指定 auto-startup XML 注解或 autoStartup 注解特性或在 bean 定义中调用 AbstractEndpoint.setAutoStartup(),你可以明确覆盖此全局属性的效果。自 4.3.12 版本起。
8 一个布尔标记,表示必须配置带有 errorChannel 选项的默认全局 requireSubscribers。自 5.4.3 版本起。更多详细信息,参见 Error Handling
9 一个布尔标记,表示默认全局 errorChannel 必须忽略分派错误,并向下一个处理程序传递消息。自 5.5 版本起。
10 端点中请求和回复超时的默认毫秒数。默认值为 30 秒,以避免无限期阻塞。可以配置为负值以恢复端点中的无限阻塞行为。自 6.2 版本起。

可以通过向类路径添加 /META-INF/spring.integration.properties 文件或 IntegrationContextUtils.INTEGRATION_GLOBAL_PROPERTIES_BEAN_NAME bean 来覆盖这些属性,以获取 org.springframework.integration.context.IntegrationProperties 实例。您不必提供所有属性,只需要您想要覆盖的属性即可。

从版本 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=-1