rishi
rishi

Reputation: 1842

Allow Camel context to run forever

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 

Upvotes: 2

Views: 2945

Answers (2)

Speckpgh
Speckpgh

Reputation: 3372

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
  }
 }

Upvotes: 0

gil.fernandes
gil.fernandes

Reputation: 14591

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();
    }
}

Upvotes: 1

Related Questions