我正在尝试创建与数据流Web服务器一起运行的Spring Cloud Stream Aggregate Application,以便能够通过Web UI管理应用程序。
应用程序运行者类:
var tableOffset = $("#table-1").offset().top;
var $header = $("#table-1 > thead");
var $fixedHeader = $("#header-fixed").append($header.clone());
$(window).bind("scroll", function() {
var offset = $(this).scrollTop();
if (offset >= tableOffset && $fixedHeader.is(":hidden")) {
$fixedHeader.show();
$.each($header.find('tr > th'), function(ind,val){
var original_width = $(val).width(); // get width value from each
var original_padding = $(val).css("padding"); // get padding from each
$($fixedHeader.find('tr > th')[ind])
.width(original_width)
.css("padding",original_padding);
});
}
else if (offset < tableOffset) {
$fixedHeader.hide();
}
});
这很好用。现在尝试添加Dataflow Server。创建一个类:
@SpringBootApplication
public class Runner {
public static void main(String[] args) {
new AggregateApplicationBuilder(args).web(true)
.from(JSONFileSourceApplication.class).args("--fixedDelay=5000")
.via(ProcessorOne.class)
.to(LoggingSinkApplication.class).run(args);
}
并将其设置为AggregateApplicationBuilder的父配置:
@SpringBootApplication
@EnableDataFlowServer
public class WebServer {}
如果我运行它,会发生以下异常:
...
new AggregateApplicationBuilder(WebServer.class, args).web(true)
...
看起来AggregateApplicationBuilder进程尝试创建另一个H2服务器,而不是使用父配置中的一个。
如果我在我的JSONFileSourceApplication,ProcessorOne和LoggingSinkApplication类中使用@Configuration替换@SpringBootApplication注释 - 流应用程序启动,Web服务器启动(http://localhost:9393/dashboard),但我没有看到我的流组件,web中的所有选项卡用户界面是空的。
如何在启用Web UI的情况下运行Spring Cloud Stream AggregateApplication?
答案 0 :(得分:0)
目前的SCDF,它不支持聚合应用程序的概念。
这样做的主要原因是SCDF假设应用程序具有已知的通道类型;它是输入/输出或两者(对于处理器)。但是,使用AggregateApplicationBuilder
时,可以通过多种方式组合频道,并且在DSL / UI中变得模糊,以便能够以自动方式发现和绑定频道。
那就是说,在即将发布的版本中,
1)我们计划引入&#34;功能链&#34;的概念。这允许组合多个&#34;小函数(例如,filterNulls,transformToUppercase,splitByHypen,..)在运行时转换为单个流应用程序。作为开发人员,您将专注于独立开发/测试功能并使用SCDF进行注册。一旦在注册表中可用,您将拥有新的DSL原语,将它们组合成一个单元,在内部由SCDF链接(在运行时)。
2)我们计划提升队列/主题的可见性。将有DSL原语进行交互并直接与它们一起创建数据管道。鉴于这种灵活性,用例组合将更容易。