【发布时间】:2017-08-09 08:48:02
【问题描述】:
我正在研究我的第一个弹簧集成用例。我想用纯 Spring Java Config 做所有事情(没有 XML 配置和 DSL,只有注释)。到目前为止,尽管缺乏文档和示例,但一切都很好。
但现在我的延迟器有问题。没有明显的注释,文档中也没有关于在 DSL 或注释中配置延迟器的内容。延迟器是否仅在 XML 配置中支持?
【问题讨论】:
我正在研究我的第一个弹簧集成用例。我想用纯 Spring Java Config 做所有事情(没有 XML 配置和 DSL,只有注释)。到目前为止,尽管缺乏文档和示例,但一切都很好。
但现在我的延迟器有问题。没有明显的注释,文档中也没有关于在 DSL 或注释中配置延迟器的内容。延迟器是否仅在 XML 配置中支持?
【问题讨论】:
关于此事的 Java DSL 应该是显而易见的:
@Bean
public IntegrationFlow delayFlow() {
return IntegrationFlows.from("delayInput")
.delay("delayer", d -> d
.delayExpression("200")
.advice(this.delayedAdvice)
.messageStore(messageStore()))
.get();
}
对于原始 Java 和注释配置,请注意 Programming Tips and Tricks。
你的重点是:
如果您已经熟悉 Spring Integration XML 配置,从 4.3 版开始,我们在 XSD 元素定义中提供了带有指针的描述,其中目标类用于为适配器或网关生成 bean。
所以,转到我们看到的<delayer> XSD:
<xsd:documentation>
Defines a Consumer Endpoint for the 'org.springframework.integration.handler.DelayHandler'
that passes a Message to the output-channel after a delay.
上面有一个关于sendChatMessageHandler() @Bean 的示例,我们可以对DelayHandler 做同样的事情:
@Bean
@ServiceActivator(inputChannel = "delayInput")
public MessageHandler delayMessageHandler() {
DelayHandler delayHandler = new DelayHandler("myGroup");
...
return delayHandler;
}
注意:5.0 版本的最新文档将包含如何通过注释和 Java DSL 配置 delayer 的示例。
【讨论】: