Spring Integration如何在XML中实现带时区的Cron轮询适配器
问题分析与正确XML配置实现
你的尝试配置存在几个明显问题:
- XML标签误用:
PollerSpec是Spring Integration Java DSL专属类,XML配置中对应的正确标签是<int:poller>,而非<int:integration:PollerSpec> - 属性语法错误:存在引号不匹配问题,且XML中时区属性名应为
time-zone(短横线分隔命名),而非Java中的驼峰式timeZone - 缺少消息生成逻辑:空的
inbound-channel-adapter默认会发送null作为消息payload,若需要自定义payload,需补充对应配置
正确的XML配置示例
<int:inbound-channel-adapter channel="cronInput" expression="''"> <int:poller cron="${bless.cron.expression}" time-zone="${bless.cron.timezone}"/> </int:inbound-channel-adapter> <int:channel id="cronInput" />
关键说明
<int:poller>直接作为<int:inbound-channel-adapter>的子标签,cron属性传入定时表达式,time-zone指定时区(支持通过占位符引用配置文件中的值)- 示例中
expression="''"用于生成空字符串作为payload,若需自定义内容,可替换为具体SpEL表达式(如expression="new java.util.Date()"传入当前时间),或通过ref+method调用自定义Bean的方法生成payload - 你的核心理解是正确的:该适配器会按照指定的cron规则触发,将消息发送到
cronInput通道,后续的服务激活器等端点可监听该通道处理消息
内容的提问来源于stack exchange,提问作者rairai
相关产品推荐
相关产品推荐

