簡體   English   中英

無法在運行時動態地在Apache Camel中添加Route

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM