使用子流创建未连接的 PublishSubscribeChannel

Create a not connected PublishSubscribeChannel with subflows

长话短说:我需要像下面这样的东西。

PublishSubscribeChannel firstChannel = new PublishSubscribeSpec(executor).subscribe(subFlow -> ...).get();

有没有一种方法可以使用尚未(尚未)连接到任何其他流的子流创建 pubsub 通道?

代码段因 PublishSubscribeSpec(Executor) has protected access in PublishSubscribeSpec 而无法运行。

我将需要像这样动态注册通道,而无需任何有关哪些流将使用这些通道的信息。

has protected access in PublishSubscribeSpec

这正是制作它的原因 protected - 避免像您这样的异常配置问题。在普通 PublishSubscribeChannel 定义中不能像这样提供子流。它是框架中 Java DSL 解析器的一部分,用于确定此类配置并在应用程序上下文中注册相应的 bean。通过显式 get() 调用,您只需完全消除 Java DSL 解析器的挂钩即可理解您的配置。

without any information about which flow(s) will be using these channels.

根据您的 .subscribe(subFlow -> 意图,这不是真的。将子流添加到 PublishSubscribeSpec 确实是“流将使用这些通道的信息”。

也许我们需要从另一个角度来审视您的业务需求。当我们可以简单地从需要 MessageChannel 作为输入的任何其他地方使用 PublishSubscribeChannel 时,没有理由坚持使用子流方法。我的意思是,如果您只是创建一个普通的 PublishSubscribeChannel 然后将其用于 IntegrationFlows.from(MessageChannel) 工厂,您将获得与那些 .subscribe(subFlow -> 连接所期望的相同的运行时结果。