[英]Unable to add Route in Apache Camel dynamically at Runtime
我想在运行时动态添加新的骆驼路线。 即说,在用户请求时,我需要添加新路由,还需要从新添加的路由中开始使用数据,而我无法这样做。
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()看到骆驼RouteCollection时,我也能在列表中看到新的路由,但是在向新路由发送消息时却无法接收。 您能看看吗,请提供您的输入
使用CamelContext
上的API在运行时添加路由。 除其他外,它还有一个addRouteBuilder
方法。 但是请检查其api。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.