Allow Camel context to run forever

一笑奈何 提交于 2021-02-10 07:17:27

问题


I am using camel-spring jar for springCamelContext. When I start the camel context , it run for 5 minutes (Default time). I can make my thread sleep for some specific time i.e.

try {
            camelContext.start();
            Thread.sleep(50 * 60 * 1000);
            camelContext.stop();
        } catch (Exception e) {
            e.printStackTrace();
        }

BUT I want is my camelContext to run FOREVER because this application is going to be deployed and It will be listening for messages from KAFKA server. I know there is a class

org.apache.camel.spring.Main

But I don't know how to configure it with springCamelContext or not sure if there any other way. Thanks

Update : Even If I remove camelContext.stop() , context is stopped after sometime and I get following logs :

[Thread-1] INFO org.apache.camel.spring.SpringCamelContext - Apache Camel 2.17.2 (CamelContext: camel-1) is shutting down
    [Thread-1] INFO org.apache.camel.impl.DefaultShutdownStrategy - Starting to graceful shutdown 1 routes (timeout 300 seconds)
    [Camel (camel-1) thread #1 - ShutdownTask] INFO org.apache.camel.component.kafka.KafkaConsumer - Stopping Kafka consumer
    [Camel (camel-1) thread #1 - ShutdownTask] INFO org.apache.camel.impl.DefaultShutdownStrategy - Route: route1 shutdown complete, was consuming from: Endpoint[kafka://localhost:9092?groupId=group0&serializerClass=org.springframework.integration.kafka.serializer.avro.AvroSerializer&topic=my-topic]
    [Thread-1] INFO org.apache.camel.impl.DefaultShutdownStrategy - Graceful shutdown of 1 routes completed in 0 seconds
    [Thread-1] INFO org.apache.camel.spring.SpringCamelContext - Apache Camel 2.17.2 (CamelContext: camel-1) uptime 4 minutes
    [Thread-1] INFO org.apache.camel.spring.SpringCamelContext - Apache Camel 2.17.2 (CamelContext: camel-1) is shutdown in 0.022 seconds 

回答1:


Here is a minimal example which runs forever and only copies files from one folder to another:

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.main.Main;

public class FileWriteRoute {

    public static void main(String[] args) throws Exception {

        Main main = new Main();

        main.addRouteBuilder(new RouteBuilder() {

            public void configure() {
                from("file://D:/dev/playground/camel-activemq/src/data")
                        .to("file://D:/dev/playground/camel-activemq/src/data_out");
            }
        });

        main.run();
    }
}



回答2:


Of if you have your Route defined in a class try:

public static void main(String[] args) throws Exception {

  Main main = new Main();
  CamelContext context = main.getOrCreateCamelContext();
  try {
    context.addRoutes(new YOURROUTECLASS());
    context.start();
    main.run();
  }
  catch (Exception e){
    enter code here
  }
 }


来源:https://stackoverflow.com/questions/39004710/allow-camel-context-to-run-forever

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!