全局属性
通过在类路径中提供属性文件,可以覆盖某些全局框架属性。
默认属性可在 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 | 一个逗号分隔的消息头名称列表,在头复制操作期间不应填充到 Message 实例中。此列表由 DefaultMessageBuilderFactory bean 使用,并传播到通过 MessageBuilder(参见 MessageBuilder 辅助类)构建消息时使用的 IntegrationMessageHeaderAccessor 实例(参见 MessageHeaderAccessor API)。默认情况下,在消息构建期间,只复制 MessageHeaders.ID 和 MessageHeaders.TIMESTAMP。自版本 4.3.2 起。 |
| 7 | 一个逗号分隔的 AbstractEndpoint bean 名称模式(xxx*、xxx、*xxx 或 xxx*yyy)列表,这些模式不应在应用程序启动期间自动启动。您可以稍后通过 控制总线、通过 SmartLifecycleRoleController(参见 端点角色)按其角色,或通过 Lifecycle 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