Spring integration 使用DSL的Spring集成

Spring integration 使用DSL的Spring集成,spring-integration,Spring Integration,我正在使用Spring集成来使用RSS提要。一旦我得到一个提要项,我需要通过使用有效负载中的一个字段来增强数据,调用一个Java类来获取一些额外的数据,并在将所有数据写入DB之前将其与有效负载一起存储 实现这一点的最佳方法是什么,有效负载充实器还是服务激活器,以及如何使用DSL来指定这一点 最后,由于有效负载是SyndEntry对象,我是否需要使用新字段创建新的有效负载 任何指针都会有帮助。是的,您需要一种新的有效负载类型;您可以使用一个简单的POJO @Bean public Enricher

我正在使用Spring集成来使用RSS提要。一旦我得到一个提要项,我需要通过使用有效负载中的一个字段来增强数据,调用一个Java类来获取一些额外的数据,并在将所有数据写入DB之前将其与有效负载一起存储

实现这一点的最佳方法是什么,有效负载充实器还是服务激活器,以及如何使用DSL来指定这一点

最后,由于有效负载是SyndEntry对象,我是否需要使用新字段创建新的有效负载


任何指针都会有帮助。

是的,您需要一种新的有效负载类型;您可以使用一个简单的POJO

@Bean
public Enricher enricher() {
    return new Enricher();
}

public static class Enricher {

    public Enhanced enhance(SyndEntry entry) {
        return new Enhanced(entry, "foo", "bar");
    }

}
然后,在DSL中

...
.handle("enricher", "enhance")
...

谢谢你,加里。非常有帮助。嗨,加里,这工作正常。只是想检查一些我需要运行以增强有效负载的代码可能需要一些时间来执行(因为它正在进行出站API连接)。如果我将此代码放入增强方法中,则需要在处理下一条新闻之前完成。有什么方法可以并行执行新闻项目的有效负载增强吗?在
.handle()
之前添加
.channel(Channels.executor(someTaskExecutorBean())
,下游的任何内容都将在
TaskExecutor提供的线程上运行。Gary干杯。我尝试使用
频道。executor
但它抱怨无法引用非静态方法。我使用了
MessageChannels.executor
,现在我可以看到正在启动的不同线程。
handle(enricher)
就足够了,只要有一个明确的候选方法。我更喜欢直言不讳。