全局属性
可以通过在类路径上提供属性文件来覆盖某些全局框架属性。
默认属性可以在 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>
- 当为 true 时,如果在应用程序上下文中未明确找到 - input-channel实例,则会自动声明为- DirectChannel实例。
- 设置例如 - DirectChannel允许的默认订阅者数量。它可用于避免无意中将多个端点订阅到同一通道。可以通过设置- max-subscribers属性来覆盖单个通道上的此设置。
- 此属性提供例如 - PublishSubscribeChannel允许的默认订阅者数量。它可用于避免无意中将超过预期数量的端点订阅到同一通道。可以通过设置- max-subscribers属性来覆盖单个通道上的此设置。
- 默认 - taskSchedulerbean 中可用的线程数。请参阅配置任务调度程序。
- 当 - true时,如果网关不期望回复(因为发送线程已超时或已经收到回复),到达网关回复通道的消息会抛出异常。
- 在执行头复制操作期间不应填充到 - Message实例中的消息头名称的逗号分隔列表。该列表由- DefaultMessageBuilderFactorybean 使用,并传播给用于通过- MessageBuilder构建消息的- IntegrationMessageHeaderAccessor实例(请参阅 MessageHeaderAccessor API)。默认情况下,仅- MessageHeaders.ID和- MessageHeaders.TIMESTAMP不会在构建消息时复制。自 4.3.2 版起。
- 在应用程序启动期间不应自动启动的 - AbstractEndpointbean 名称模式(- xxx*、- **xxx**、- *xxx或- xxx*yyy)的逗号分隔列表。可以通过 控制总线 通过其 bean 名称手动启动这些端点,也可以通过- SmartLifecycleRoleController使用其角色启动(请参阅 端点角色),或者通过- Lifecyclebean 注入启动。可以在 bean 定义中通过指定- auto-startupXML 注释或- autoStartup注释属性或调用- AbstractEndpoint.setAutoStartup()来显式覆盖此全局属性的效果。自 4.3.12 版起。
- 一个布尔标志,指示默认全局 - errorChannel必须使用- requireSubscribers选项进行配置。自 5.4.3 版起。有关更多信息,请参阅 错误处理。
- 一个布尔标志,指示默认全局 - errorChannel必须忽略分发错误并将消息传递给下一个处理器。自 5.5 版起。
- 端点请求和回复超时的默认毫秒数。默认值为 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=30000