You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by boday <bo...@vektrel.com> on 2009/12/15 02:15:46 UTC

start/stop routes programmatically

I see that Camel 2.1 now support starting/stopping routes via JMX/APIs.  But,
how do I identify routes properly at runtime...

For example, assume I have the following route...

from("activemq:queue1").to("activemq:queue2");
from("activemq:queue2").to("activemq:queue3");

They show up in JMX as "route1" and "route2".  The description/endpointURI
fields definitely help, but might be problematic to use when there are a lot
of routes.  

The same applies to finding a routes with Camel APIs.  I can get a list of
routes using this...

getContext().getRouteCollection().getRoutes()

I see that I can then call the following on a RouteDefinition to get to the
first endpoint name

routeDefinition.getInputs().get(0).getLabel()

I guess I could use this name to identify a route and then call
stop()/start() on it...but this seems like a very indirect approach to
identify it?  Am I missing something?

What I'd like to do is give a route an explicit name that can be referenced
later (in JMX/programmatically)...maybe the DescriptionDefinition class
could help, but am not sure how to use it...

something along these lines is what I'm looking for...

setRouteName("InboundRoute").from("activemq:queue1").to("activemq:queue2");
setRouteName("ProcessingRoute").from("activemq:queue2").to("activemq:queue3");

thanks in advance...






-----
Ben - Senior Consultant
using SMX 3.3.1/Camel 2.0
-- 
View this message in context: http://old.nabble.com/start-stop-routes-programmatically-tp26781725p26781725.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: start/stop routes programmatically

Posted by Willem Jiang <wi...@gmail.com>.
Yes, supporting to set the route name would be very useful when you want 
manage the route states from JMS or API.

I just created a JIRA[1] for it.

[1] https://issues.apache.org/activemq/browse/CAMEL-2290

Willem

boday wrote:
> I see that Camel 2.1 now support starting/stopping routes via JMX/APIs.  But,
> how do I identify routes properly at runtime...
> 
> For example, assume I have the following route...
> 
> from("activemq:queue1").to("activemq:queue2");
> from("activemq:queue2").to("activemq:queue3");
> 
> They show up in JMX as "route1" and "route2".  The description/endpointURI
> fields definitely help, but might be problematic to use when there are a lot
> of routes.  
> 
> The same applies to finding a routes with Camel APIs.  I can get a list of
> routes using this...
> 
> getContext().getRouteCollection().getRoutes()
> 
> I see that I can then call the following on a RouteDefinition to get to the
> first endpoint name
> 
> routeDefinition.getInputs().get(0).getLabel()
> 
> I guess I could use this name to identify a route and then call
> stop()/start() on it...but this seems like a very indirect approach to
> identify it?  Am I missing something?
> 
> What I'd like to do is give a route an explicit name that can be referenced
> later (in JMX/programmatically)...maybe the DescriptionDefinition class
> could help, but am not sure how to use it...
> 
> something along these lines is what I'm looking for...
> 
> setRouteName("InboundRoute").from("activemq:queue1").to("activemq:queue2");
> setRouteName("ProcessingRoute").from("activemq:queue2").to("activemq:queue3");
> 
> thanks in advance...
> 
> 
> 
> 
> 
> 
> -----
> Ben - Senior Consultant
> using SMX 3.3.1/Camel 2.0


Re: start/stop routes programmatically

Posted by Jon Anstey <ja...@gmail.com>.
Ha! This must have changed since the last time I used it ;)

On Mon, Dec 14, 2009 at 11:15 PM, Willem Jiang <wi...@gmail.com>wrote:

> Hi Jon,
>
> After checking the code, I think the DSL should be
> from("activemq:queue1").routeId("InboundRoute").to("activemq:queue2");
> from("activemq:queue2").routeId("ProcessingRoute").to("activemq:queue3");
>
> Willem
>
>
> Jon Anstey wrote:
>
>> You can set custom ids for each route like this:
>>
>> from("activemq:queue1").id("InboundRoute").to("activemq:queue2");
>> from("activemq:queue2").id("ProcessingRoute").to("activemq:queue3");
>>
>> in the Spring DSL you can just use standard id attributes like:
>>
>> ...
>> <route id="InboundRoute">
>> ...
>>
>> On Mon, Dec 14, 2009 at 9:45 PM, boday <bo...@vektrel.com> wrote:
>>
>>  I see that Camel 2.1 now support starting/stopping routes via JMX/APIs.
>>>  But,
>>> how do I identify routes properly at runtime...
>>>
>>> For example, assume I have the following route...
>>>
>>> from("activemq:queue1").to("activemq:queue2");
>>> from("activemq:queue2").to("activemq:queue3");
>>>
>>> They show up in JMX as "route1" and "route2".  The
>>> description/endpointURI
>>> fields definitely help, but might be problematic to use when there are a
>>> lot
>>> of routes.
>>>
>>> The same applies to finding a routes with Camel APIs.  I can get a list
>>> of
>>> routes using this...
>>>
>>> getContext().getRouteCollection().getRoutes()
>>>
>>> I see that I can then call the following on a RouteDefinition to get to
>>> the
>>> first endpoint name
>>>
>>> routeDefinition.getInputs().get(0).getLabel()
>>>
>>> I guess I could use this name to identify a route and then call
>>> stop()/start() on it...but this seems like a very indirect approach to
>>> identify it?  Am I missing something?
>>>
>>> What I'd like to do is give a route an explicit name that can be
>>> referenced
>>> later (in JMX/programmatically)...maybe the DescriptionDefinition class
>>> could help, but am not sure how to use it...
>>>
>>> something along these lines is what I'm looking for...
>>>
>>>
>>> setRouteName("InboundRoute").from("activemq:queue1").to("activemq:queue2");
>>>
>>>
>>> setRouteName("ProcessingRoute").from("activemq:queue2").to("activemq:queue3");
>>>
>>> thanks in advance...
>>>
>>>
>>>
>>>
>>>
>>>
>>> -----
>>> Ben - Senior Consultant
>>> using SMX 3.3.1/Camel 2.0
>>> --
>>> View this message in context:
>>>
>>> http://old.nabble.com/start-stop-routes-programmatically-tp26781725p26781725.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>>
>


-- 
Cheers,
Jon

Camel in Action: http://manning.com/ibsen
Blog: http://janstey.blogspot.com

Re: start/stop routes programmatically

Posted by boday <bo...@vektrel.com>.
perfect, that is what I was looking for...thanks guys


willem.jiang wrote:
> 
> If you are using camel 2.0, you may need to use id() dsl,
> but for camel 2.1 you can use the routeId() dsl.
> 
> You can find more information here[1]
> 
> [1] https://issues.apache.org/activemq/browse/CAMEL-2109
> 
> Willem
> 
> 


-----
Ben - Senior Consultant
using SMX 3.3.1/Camel 2.1
-- 
View this message in context: http://old.nabble.com/start-stop-routes-programmatically-tp26781725p26798471.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: start/stop routes programmatically

Posted by Willem Jiang <wi...@gmail.com>.
If you are using camel 2.0, you may need to use id() dsl,
but for camel 2.1 you can use the routeId() dsl.

You can find more information here[1]

[1] https://issues.apache.org/activemq/browse/CAMEL-2109

Willem

Willem Jiang wrote:
> Hi Jon,
> 
> After checking the code, I think the DSL should be
> from("activemq:queue1").routeId("InboundRoute").to("activemq:queue2");
> from("activemq:queue2").routeId("ProcessingRoute").to("activemq:queue3");
> 
> Willem
> 
> Jon Anstey wrote:
>> You can set custom ids for each route like this:
>>
>> from("activemq:queue1").id("InboundRoute").to("activemq:queue2");
>> from("activemq:queue2").id("ProcessingRoute").to("activemq:queue3");
>>
>> in the Spring DSL you can just use standard id attributes like:
>>
>> ...
>> <route id="InboundRoute">
>> ...
>>
>> On Mon, Dec 14, 2009 at 9:45 PM, boday <bo...@vektrel.com> wrote:
>>
>>> I see that Camel 2.1 now support starting/stopping routes via JMX/APIs.
>>>  But,
>>> how do I identify routes properly at runtime...
>>>
>>> For example, assume I have the following route...
>>>
>>> from("activemq:queue1").to("activemq:queue2");
>>> from("activemq:queue2").to("activemq:queue3");
>>>
>>> They show up in JMX as "route1" and "route2".  The 
>>> description/endpointURI
>>> fields definitely help, but might be problematic to use when there are a
>>> lot
>>> of routes.
>>>
>>> The same applies to finding a routes with Camel APIs.  I can get a 
>>> list of
>>> routes using this...
>>>
>>> getContext().getRouteCollection().getRoutes()
>>>
>>> I see that I can then call the following on a RouteDefinition to get 
>>> to the
>>> first endpoint name
>>>
>>> routeDefinition.getInputs().get(0).getLabel()
>>>
>>> I guess I could use this name to identify a route and then call
>>> stop()/start() on it...but this seems like a very indirect approach to
>>> identify it?  Am I missing something?
>>>
>>> What I'd like to do is give a route an explicit name that can be 
>>> referenced
>>> later (in JMX/programmatically)...maybe the DescriptionDefinition class
>>> could help, but am not sure how to use it...
>>>
>>> something along these lines is what I'm looking for...
>>>
>>> setRouteName("InboundRoute").from("activemq:queue1").to("activemq:queue2"); 
>>>
>>>
>>> setRouteName("ProcessingRoute").from("activemq:queue2").to("activemq:queue3"); 
>>>
>>>
>>> thanks in advance...
>>>
>>>
>>>
>>>
>>>
>>>
>>> -----
>>> Ben - Senior Consultant
>>> using SMX 3.3.1/Camel 2.0
>>> -- 
>>> View this message in context:
>>> http://old.nabble.com/start-stop-routes-programmatically-tp26781725p26781725.html 
>>>
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>
>>
> 
> 


Re: start/stop routes programmatically

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

After checking the code, I think the DSL should be
from("activemq:queue1").routeId("InboundRoute").to("activemq:queue2");
from("activemq:queue2").routeId("ProcessingRoute").to("activemq:queue3");

Willem

Jon Anstey wrote:
> You can set custom ids for each route like this:
> 
> from("activemq:queue1").id("InboundRoute").to("activemq:queue2");
> from("activemq:queue2").id("ProcessingRoute").to("activemq:queue3");
> 
> in the Spring DSL you can just use standard id attributes like:
> 
> ...
> <route id="InboundRoute">
> ...
> 
> On Mon, Dec 14, 2009 at 9:45 PM, boday <bo...@vektrel.com> wrote:
> 
>> I see that Camel 2.1 now support starting/stopping routes via JMX/APIs.
>>  But,
>> how do I identify routes properly at runtime...
>>
>> For example, assume I have the following route...
>>
>> from("activemq:queue1").to("activemq:queue2");
>> from("activemq:queue2").to("activemq:queue3");
>>
>> They show up in JMX as "route1" and "route2".  The description/endpointURI
>> fields definitely help, but might be problematic to use when there are a
>> lot
>> of routes.
>>
>> The same applies to finding a routes with Camel APIs.  I can get a list of
>> routes using this...
>>
>> getContext().getRouteCollection().getRoutes()
>>
>> I see that I can then call the following on a RouteDefinition to get to the
>> first endpoint name
>>
>> routeDefinition.getInputs().get(0).getLabel()
>>
>> I guess I could use this name to identify a route and then call
>> stop()/start() on it...but this seems like a very indirect approach to
>> identify it?  Am I missing something?
>>
>> What I'd like to do is give a route an explicit name that can be referenced
>> later (in JMX/programmatically)...maybe the DescriptionDefinition class
>> could help, but am not sure how to use it...
>>
>> something along these lines is what I'm looking for...
>>
>> setRouteName("InboundRoute").from("activemq:queue1").to("activemq:queue2");
>>
>> setRouteName("ProcessingRoute").from("activemq:queue2").to("activemq:queue3");
>>
>> thanks in advance...
>>
>>
>>
>>
>>
>>
>> -----
>> Ben - Senior Consultant
>> using SMX 3.3.1/Camel 2.0
>> --
>> View this message in context:
>> http://old.nabble.com/start-stop-routes-programmatically-tp26781725p26781725.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
> 
> 


Re: start/stop routes programmatically

Posted by Jon Anstey <ja...@gmail.com>.
You can set custom ids for each route like this:

from("activemq:queue1").id("InboundRoute").to("activemq:queue2");
from("activemq:queue2").id("ProcessingRoute").to("activemq:queue3");

in the Spring DSL you can just use standard id attributes like:

...
<route id="InboundRoute">
...

On Mon, Dec 14, 2009 at 9:45 PM, boday <bo...@vektrel.com> wrote:

>
> I see that Camel 2.1 now support starting/stopping routes via JMX/APIs.
>  But,
> how do I identify routes properly at runtime...
>
> For example, assume I have the following route...
>
> from("activemq:queue1").to("activemq:queue2");
> from("activemq:queue2").to("activemq:queue3");
>
> They show up in JMX as "route1" and "route2".  The description/endpointURI
> fields definitely help, but might be problematic to use when there are a
> lot
> of routes.
>
> The same applies to finding a routes with Camel APIs.  I can get a list of
> routes using this...
>
> getContext().getRouteCollection().getRoutes()
>
> I see that I can then call the following on a RouteDefinition to get to the
> first endpoint name
>
> routeDefinition.getInputs().get(0).getLabel()
>
> I guess I could use this name to identify a route and then call
> stop()/start() on it...but this seems like a very indirect approach to
> identify it?  Am I missing something?
>
> What I'd like to do is give a route an explicit name that can be referenced
> later (in JMX/programmatically)...maybe the DescriptionDefinition class
> could help, but am not sure how to use it...
>
> something along these lines is what I'm looking for...
>
> setRouteName("InboundRoute").from("activemq:queue1").to("activemq:queue2");
>
> setRouteName("ProcessingRoute").from("activemq:queue2").to("activemq:queue3");
>
> thanks in advance...
>
>
>
>
>
>
> -----
> Ben - Senior Consultant
> using SMX 3.3.1/Camel 2.0
> --
> View this message in context:
> http://old.nabble.com/start-stop-routes-programmatically-tp26781725p26781725.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>


-- 
Cheers,
Jon

Camel in Action: http://manning.com/ibsen
Blog: http://janstey.blogspot.com