我正在使用来自REST端点的数据(数量级为1000+),这些端点都具有相同的结构:
<server uri>/v1/source/<some ID>
我使用的RouteBuilder组件如下所示,连接到单个端点<ID>
:
@Component
public class Route_to_<ID> extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:mytimer?repeatCount=1") //
.setBody(simple("${null}")) //
.setHeader(Exchange.CONTENT_TYPE, simple("text/event-stream"))
.setHeader("CamelHttpMethod", simple("GET"))
.to(
<server uri>/v1/source/<ID>
+ _deviceName + "::" + _deviceProperty //
+ "?disableStreamCache=true" //
) //
.process(data -> {
... do same stuff for all endpoints ...
});
}
}
对应的SpringBootApplication
如下所示:
@SpringBootApplication
@ComponentScan(basePackages = "my.package.where.components.reside")
public class MyRouteHandler {
}
是否有一种优雅的方法可以使用一个SpringBootApplication
一次性启动所有到端点<ID>
的单独路由?或者每个路由都需要单独启动的单独SpringBootApplication
?
1条答案
按热度按时间k5ifujac1#
您可以将toD与动态URI一起使用,动态URI从消息正文、标头或交换属性中获取版本、源和ID。您还可以使用property-placeholders定义主机、端口和其他配置。
由于REST端点都使用相同的结构,因此您可以更改版本、源和id,并对大多数(如果不是所有)REST API调用使用相同的URI。
范例: