如果路由正确执行,使用java DSL创建的路由不会给出任何线索。使用apache AHC compoenet也作为组件之一

时间:2015-03-18 14:19:27

标签: java routes apache-camel dsl

我已经配置了如下所示的路线。我没有异常,但同时没有输出。

public static void main(String[] args) {    
CamelContext camelContext = new DefaultCamelContext();
    try {
        camelContext.addRoutes(new RouteBuilder() {
           public void configure() {
                from("direct:foo")               
                .to("ahc:http://services.odata.org/V2/Northwind/Northwind.svc/")
                .to("file:c:/workpro/outbox?fileName=ahc.xml");
           }
        });
        camelContext.start();
    }catch (Exception e1) {
    }           
    }

执行后我应该在c盘中创建一个名为workpro的文件夹。您是否看到我定义路线的方式存在任何问题。

非常感谢, 勒凯什

1 个答案:

答案 0 :(得分:1)

在from中使用计时器,如果您只想调用一次,则将其设置为repeatCount=1

非阻塞的开始方法 - 我刚加了一个睡眠30秒。但请参阅此常见问题解答以获取更好的方法:http://camel.apache.org/running-camel-standalone-and-have-it-keep-running.html

public static void main(String[] args) {    
CamelContext camelContext = new DefaultCamelContext();
    try {
        camelContext.addRoutes(new RouteBuilder() {
           public void configure() {
                from("timer:foo?repeatCount=1")               
                .to("ahc:http://services.odata.org/V2/Northwind/Northwind.svc/")
                .to("file:c:/workpro/outbox?fileName=ahc.xml");
           }
        });
        camelContext.start();
        Thread.sleep(30000);
        camelContext.stop();
    }catch (Exception e1) {
    }           
    }

或者您可以直接使用计时器代替计时器,但是您需要向直接端点发送消息以触发您的路由运行。这些都记录在Apache Camel入门中,例如http://camel.apache.org/walk-through-an-example.html。建议Camel的新用户阅读:http://java.dzone.com/articles/open-source-integration-apache