Spring Integration (集成)Groovy DSL

Groovy DSL是??Java DSL???的包装器和扩展。 我们在这里追求的主要目标是使Groovy上的Spring Integration开发尽可能顺利和直接,并与现有的Java DSL和一些Groovy扩展或特定于语言的结构进行互操作性。 该实现是??Groovy支持??模块的一部分。

您只需要导入一个包含 Groovy DSL 重载工厂方法的类。??import static org.springframework.integration.groovy.dsl.IntegrationGroovyDsl.integrationFlow??

对于 lambda 的定义,我们通常不需要 Groovy 的其他任何东西,只需像这样声明一个 bean:??IntegrationFlow??

@BeanIntegrationFlow oddFlow() { { IntegrationFlowDefinition flow -> flow.handle(Object, { p, h -> ‘odd’ }) }}

在这种情况下,Groovy理解闭包应该转换为匿名实例,目标Java DSL处理器将此构造正确解析为Java对象。??IntegrationFlow??

作为上述构造的替代方案,并且为了与下面解释的用例保持一致,该模块提供了一个特定于 Groovy 的 DSL,用于以构建器模式样式声明集成流:??spring-integration-groovy??

@BeanflowLambda() { integrationFlow { filter String, { it == ‘test’ }, { id ‘filterEndpoint’ } wireTap integrationFlow { channel { queue ‘wireTapChannel’ } } delay ‘delayGroup’, { defaultDelay 100 } transform String, { it.toUpperCase() } }}

这样的全局函数期望 a(一个 Groovy 包装器)的构建器风格的闭包,并生成一个常规的 lambda 实现。 请参阅下面的更多重载变体。??integrationFlow()????GroovyIntegrationFlowDefinition????IntegrationFlowDefinition????IntegrationFlow????integrationFlow()??

许多其他场景需要从数据源(例如,或只是一个现有的)启动anto。 为此,Spring Integration Java DSL为工厂提供了许多重载方法。 这个工厂也可以用于时髦:??IntegrationFlow????JdbcPollingChannelAdapter????JmsInboundGateway????MessageChannel????IntegrationFlow????from()??

@BeanflowFromSupplier() { IntegrationFlow.fromSupplier({ ‘bar’ }) { e -> e.poller { p -> p.fixedDelay(10).maxMessagesPerPoll(1) } } .channel({ c -> c.queue(‘fromSupplierQueue’) } as Function) .get()}

但不幸的是,并非所有方法都与Groovy结构兼容。 为了解决这个问题,Spring Integration在工厂周围提供了一个Groovy DSL工厂。 它作为一组重载函数实现。 ato 的使用者将流的其余部分声明为闭包,以重用上述体验,并最终避免对 acall 的需求。 例如:??from()????IntegrationFlows????integrationFlow()????GroovyIntegrationFlowDefinition????IntegrationFlow????get()??

@BeanfunctionFlow() { integrationFlow Function<byte[], String>, { beanName ‘functionGateway’ }, { transform Transformers.objectToString(), { id ‘objectToStringTransformer’ } transform String, { it.toUpperCase() } split Message<?>, { it.payload } split Object, { it }, { id ‘splitterEndpoint’ } resequence() aggregate { id ‘aggregator’ outputProcessor { it.one } } }}@BeansomeFlow() { integrationFlow ({ ‘test’ }, { poller { it.trigger new OnlyOnceTrigger() } id ‘pollingSource’ }) { log LoggingHandler.Level.WARN, ‘test.category’ channel { queue ‘pollerResultChannel’ } }} 想做你的有缘人,可是我知道结果是惨淡的,但还是心存希望!

Spring Integration (集成)Groovy DSL

相关文章:

你感兴趣的文章:

标签云: