You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Mansour Al Akeel <ma...@gmail.com> on 2015/05/02 16:25:00 UTC

Using quartz and quartz2

I am just starting with quartz-camel. Toying with a small project, as
I need the stateful capability.


public class DataBaseSyncRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {

        from("quartz://sync/myTimer").process(new Processor() {
            @Override
            public void process(Exchange exchange) throws Exception {
                System.out.println("One second timer...");
            }
        });
    }

}

This is generating this error:

[.db.integration.MainApp.main()] SpringCamelContext             INFO
Apache Camel 2.15.1 (CamelContext: camel5) is shutdown in 0.046
seconds
[WARNING]
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.camel.FailedToStartRouteException: Failed to
start route route2 because of Multiple consumers for the same endpoint
is not allowed: Endpoint[quartz://sync/myTimer]
        at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3142)
        at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3099)
        at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3029)
        at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3042)
        at org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:2919)
        at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:843)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2895)
        at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:775)
        at org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:397)
        at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:311)
        at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:731)
        at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:728)
        at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2486)
        at org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:728)
        at org.apache.camel.main.MainSupport.postProcessCamelContext(MainSupport.java:476)
        at org.apache.camel.main.MainSupport.postProcessContext(MainSupport.java:405)
        at org.apache.camel.spring.Main.doStart(Main.java:171)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at org.apache.camel.main.MainSupport.run(MainSupport.java:150)
        at org.apache.camel.main.MainSupport.run(MainSupport.java:354)



Chaging the URL to use quartz2 :

        from("quartz2://sync/myTimer").process(new Processor() {


Is causing this error:

[WARNING]
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to
create route route2: Route(route2)[[From[quartz2://sync/myTimer]] ->
[process[Pro... because of Failed to resolve endpoint:
quartz2://sync/myTimer due to: Trigger key sync.myTimer is already in
us$ by Endpoint[quartz2://sync/myTimer]
        at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:190)
        at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:841)
        at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2895)
        at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:775)
        at org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:397)
        at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:311)
        at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:731)
        at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:728)
        at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2486)
        at org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:728)
        at org.apache.camel.main.MainSupport.postProcessCamelContext(MainSupport.java:476)
        at org.apache.camel.main.MainSupport.postProcessContext(MainSupport.java:405)
        at org.apache.camel.spring.Main.doStart(Main.java:171)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at org.apache.camel.main.MainSupport.run(MainSupport.java:150)
        at org.apache.camel.main.MainSupport.run(MainSupport.java:354)

...
Caused by: java.lang.IllegalArgumentException: Trigger key
sync.myTimer is already in use by Endpoint[quartz2://sync/myTimer]
        at org.apache.camel.component.quartz2.QuartzEndpoint.ensureNoDupTriggerKey(QuartzEndpoint.java:341)
        at org.apache.camel.component.quartz2.QuartzEndpoint.addJobInScheduler(QuartzEndpoint.java:275)
        at org.apache.camel.component.quartz2.QuartzEndpoint.doStart(QuartzEndpoint.java:235)
        at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)
        at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:2869)
        at org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:1097)
        at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:1058)
        at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:1054)
        at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:574)
        ... 30 more



Why am I getting an error complaining about the EndPint being in use ??

Thank you.

Re: Using quartz and quartz2

Posted by Willem Jiang <wi...@gmail.com>.
Hi,

You are not supposed to use tow quartz endpoint with same relative path setting.
Please change the uri to another path such as "quartz://sync/myTimer2”.

--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On May 3, 2015 at 4:02:53 AM, Mansour Al Akeel (mansour.alakeel@gmail.com) wrote:
> I am just starting with quartz-camel. Toying with a small project, as
> I need the stateful capability.
>  
>  
> public class DataBaseSyncRouteBuilder extends RouteBuilder {
>  
> @Override
> public void configure() throws Exception {
>  
> from("quartz://sync/myTimer").process(new Processor() {
> @Override
> public void process(Exchange exchange) throws Exception {
> System.out.println("One second timer...");
> }
> });
> }
>  
> }
>  
> This is generating this error:
>  
> [.db.integration.MainApp.main()] SpringCamelContext INFO
> Apache Camel 2.15.1 (CamelContext: camel5) is shutdown in 0.046
> seconds
> [WARNING]
> java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.camel.FailedToStartRouteException: Failed to
> start route route2 because of Multiple consumers for the same endpoint
> is not allowed: Endpoint[quartz://sync/myTimer]
> at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3142)  
> at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3099)  
> at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3029)  
> at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3042)  
> at org.apache.camel.impl.DefaultCamelContext.startRouteService(DefaultCamelContext.java:2919)  
> at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:843)  
> at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2895)  
> at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:775)  
> at org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:397)  
> at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:311)  
> at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:731)  
> at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:728)  
> at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2486)  
> at org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:728)  
> at org.apache.camel.main.MainSupport.postProcessCamelContext(MainSupport.java:476)  
> at org.apache.camel.main.MainSupport.postProcessContext(MainSupport.java:405)  
> at org.apache.camel.spring.Main.doStart(Main.java:171)
> at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)  
> at org.apache.camel.main.MainSupport.run(MainSupport.java:150)
> at org.apache.camel.main.MainSupport.run(MainSupport.java:354)
>  
>  
>  
> Chaging the URL to use quartz2 :
>  
> from("quartz2://sync/myTimer").process(new Processor() {
>  
>  
> Is causing this error:
>  
> [WARNING]
> java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)  
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  
> at java.lang.reflect.Method.invoke(Method.java:606)
> at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:297)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: org.apache.camel.FailedToCreateRouteException: Failed to
> create route route2: Route(route2)[[From[quartz2://sync/myTimer]] ->
> [process[Pro... because of Failed to resolve endpoint:
> quartz2://sync/myTimer due to: Trigger key sync.myTimer is already in
> us$ by Endpoint[quartz2://sync/myTimer]
> at org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:190)  
> at org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:841)  
> at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:2895)  
> at org.apache.camel.impl.DefaultCamelContext.addRouteDefinitions(DefaultCamelContext.java:775)  
> at org.apache.camel.builder.RouteBuilder.populateRoutes(RouteBuilder.java:397)  
> at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:311)  
> at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:731)  
> at org.apache.camel.impl.DefaultCamelContext$1.call(DefaultCamelContext.java:728)  
> at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2486)  
> at org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:728)  
> at org.apache.camel.main.MainSupport.postProcessCamelContext(MainSupport.java:476)  
> at org.apache.camel.main.MainSupport.postProcessContext(MainSupport.java:405)  
> at org.apache.camel.spring.Main.doStart(Main.java:171)
> at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)  
> at org.apache.camel.main.MainSupport.run(MainSupport.java:150)
> at org.apache.camel.main.MainSupport.run(MainSupport.java:354)
>  
> ...
> Caused by: java.lang.IllegalArgumentException: Trigger key
> sync.myTimer is already in use by Endpoint[quartz2://sync/myTimer]
> at org.apache.camel.component.quartz2.QuartzEndpoint.ensureNoDupTriggerKey(QuartzEndpoint.java:341)  
> at org.apache.camel.component.quartz2.QuartzEndpoint.addJobInScheduler(QuartzEndpoint.java:275)  
> at org.apache.camel.component.quartz2.QuartzEndpoint.doStart(QuartzEndpoint.java:235)  
> at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61)  
> at org.apache.camel.impl.DefaultCamelContext.startService(DefaultCamelContext.java:2869)  
> at org.apache.camel.impl.DefaultCamelContext.doAddService(DefaultCamelContext.java:1097)  
> at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:1058)  
> at org.apache.camel.impl.DefaultCamelContext.addService(DefaultCamelContext.java:1054)  
> at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:574)  
> ... 30 more
>  
>  
>  
> Why am I getting an error complaining about the EndPint being in use ??
>  
> Thank you.
>  


Re: Using quartz and quartz2

Posted by Mansour Al Akeel <ma...@gmail.com>.
I had to use routeId("myId"):

    from("quartz2://sync/myTimer?trigger.repeatInterval=5000")
                .routeId("myRoute")


Thank you.