gpt4 book ai didi

java - 无法在运行时动态添加 Apache Camel 中的路由

转载 作者:行者123 更新时间:2023-12-01 21:53:22 29 4
gpt4 key购买 nike

我想在运行时动态添加新的 Camel 路线。也就是说,根据用户请求,我需要添加新路线,并且还需要开始使用新添加 route 的数据,但我做不到。

import java.util.ArrayList;
import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.SpringRouteBuilder;
import org.apache.camel.model.RouteDefinition;
import org.springframework.stereotype.Component;
@Component
public class EndNodeConsumer extends SpringRouteBuilder {

public List<String> routes_list = new ArrayList<String>();

public EndNodeConsumer(){
if(routes_list!=null && routes_list.size() == 0){
routes_list.add("ddsi:EndNode1:0/Sensor.Msg?reliabilityKind=RELIABLE&Partition=EndNode");
routes_list.add("ddsi:EndNode2:0/Sensor.Msg?reliabilityKind=RELIABLE&Partition=EndNode");
}
}

@Override
public void configure() throws Exception {
for(int i =0 ;i <routes_list.size(); i++){
System.out.println("inside configure "+i+" "+routes_list.get(i));
from(routes_list.get(i))
.unmarshal("cdr")
.process(new Processor() {
public void process(Exchange e) {
System.out.println("DDS Consumer "+((Sensor.Msg) e.getIn().getBody()).sensorId);
}
});
}
List<RouteDefinition> str = getRouteCollection().getRoutes();
for(int j = 0 ;j <str.size();j++){
System.out.println("routes "+str.get(j));
}

}
}

根据请求,新路线将被添加到数组列表“routes_list”中。然后将对方法“configure”进行函数调用。

当我通过调用 getRouteCollection().getRoutes() 看到 Camel RouteCollection 时,我也可以在列表中看到新路线,但在向新路线发送消息时无法接收。您能否查看一下并提供您的意见

最佳答案

使用 CamelContext 上的 API 在运行时添加路由。它有一个 addRouteBuilder 方法等。但请检查其 api。

关于java - 无法在运行时动态添加 Apache Camel 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34813063/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com