全局属性
某些全局框架属性可以通过在类路径上提供一个属性文件来覆盖。
默认属性可以在 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 使用,并传播到IntegrationMessageHeaderAccessor实例(请参阅MessageHeaderAccessor API),这些实例用于通过MessageBuilder构建消息(请参阅MessageBuilder 辅助类)。默认情况下,在消息构建期间仅不复制MessageHeaders.ID和MessageHeaders.TIMESTAMP。自版本 4.3.2 起。不应在应用启动期间自动启动的
AbstractEndpointbean 名称模式(xxx*、**xxx**、*xxx或xxx*yyy)的逗号分隔列表。您稍后可以通过控制总线按其 bean 名称、通过SmartLifecycleRoleController按其角色(请参阅端点角色)或通过Lifecyclebean 注入手动启动这些端点。您可以通过指定auto-startupXML 注解或autoStartup注解属性,或在 bean 定义中调用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 的 org.springframework.integration.context.IntegrationProperties 实例 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