我正在寻找一个关于如何通过根流连接不同集成流的组件。我看到了 这个 教程(见5.2. Bridge);它有一个主根流,然后是两个不同的流。我在我的应用程序中试过这样做,但如果不把它放在 PollerMetadata.DEFAULT_POLLER.. 给出一个错误。在上下文中没有可用的默认轮询器。 当我添加 PollerMetadata.DEFAULT_POLLER.桥端点配置器中的倍数没有达到预期的效果。可能,它与默认的poller配置冲突。
简而言之,我如何通过一个主根连接两个不同的流?但是,不同的流必须在不同的时间工作。
我不知道我是否使用了正确的组件,任何帮助将是感激的。谢谢你的帮助。
另外,我还看到 这个 问题是一种类似的。它可以帮助理解我的问题。
更新
@Bean(name = PollerMetadata.DEFAULT_POLLER)
public PollerMetadata poller() {
return Pollers.fixedRate(60, TimeUnit.SECONDS, 10).get();
}
@Bean
public IntegrationFlow fileReader() {
return IntegrationFlows
.from(sourceDirectory())
.split()
.publishSubscribeChannel(c -> c
.subscribe("fileWriter"))
.publishSubscribeChannel(c -> c
.subscribe("anotherFileWriter"))
.get();
}
@Bean
public IntegrationFlow fileWriter() {
return IntegrationFlows
.from("fileWriter")
.bridge(e -> e.poller(10, TimeUnit.SECONDS, 5))
.handle()
.get();
}
@Bean
public IntegrationFlow anotherFileWriter() {
return IntegrationFlows
.from("anotherFileWriter")
.bridge(e -> e.poller(20, TimeUnit.SECONDS, 5))
.handle()
.get();
}
在问这样的问题时,你应该展示你的代码。
我不太清楚你说的 "根流 "是什么意思。
简而言之,如何通过一个主根连接两个不同的流?
如果它们都从同一个可轮询通道消耗,每个消息将只传给一个或另一个流。
为了具体回答你的问题,你指出的例子显示了如何在端点上配置一个特定的轮询器......。
>.bridge(e -> e.poller(Pollers.fixedRate(1, TimeUnit.SECONDS, 20)))
如果你省略了端点上的轮询器,你只需要一个默认的轮询器。