camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Removing routes programmatically
Date Fri, 08 Jul 2011 07:02:26 GMT
On Fri, Jul 8, 2011 at 8:56 AM, Daniel Spaven <danspaven@gmail.com> wrote:
> Hey Claus, Ashwin,
>
> I haven't got any access to my development environment right now. But i can
> tell you by memory that the topic is not durable and the durable topic name
> and client id is not set.
>
> Also Ashwin regarding the test; based on what i observed when looking at the
> runtime route attributes on JMX (as stated in my first post). The test you
> ran would not catch the problem. After removing a route my other routes
> would still be running and have the status of "started", however they
> wouldn't actually be working. They would not consume and route JMS messages
> as they should do and were doing before i removed a route.
>

Can you post the actual endpoint uris of the routes. I suspect you may
have duplicate uris, and

<route id="a">
   <from uri="jms:topic:foo"/>
   ...
</route>

<route id="b">
   <from uri="jms:topic:foo"/>
   ...
</route>

And then if you stop route A, then somehow the topic consumer in route
B gets stopped as well.


> On Thu, Jul 7, 2011 at 4:42 PM, Ashwin Karpe <akarpe@fusesource.com> wrote:
>
>> Hi Daniel,
>>
>> I am finding it hard to see an issue when I run the following test. While I
>> am not using JMS, I do have the same consumer setup under a different
>> routeId. I find that following a run of this test that routeId "bar" is
>> still up and running.
>>
>> The line assertNull(context.getRouteStatus("bar")); fails as expected...
>>
>> I have not tried JMS and whether there are any side-effects tied to this.
>> Can't see anything wrong when I run SEDA with multiple consumers.
>>
>> Cheers,
>>
>> Ashwin...
>>
>>
>> ----------------------------------------------------------------------------------------------------------
>>
>> /**
>>  * Licensed to the Apache Software Foundation (ASF) under one or more
>>  * contributor license agreements.  See the NOTICE file distributed with
>>  * this work for additional information regarding copyright ownership.
>>  * The ASF licenses this file to You under the Apache License, Version 2.0
>>  * (the "License"); you may not use this file except in compliance with
>>  * the License.  You may obtain a copy of the License at
>>  *
>>  *      http://www.apache.org/licenses/LICENSE-2.0
>>  *
>>  * Unless required by applicable law or agreed to in writing, software
>>  * distributed under the License is distributed on an "AS IS" BASIS,
>>  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>  * See the License for the specific language governing permissions and
>>  * limitations under the License.
>>  */
>> package org.apache.camel.impl;
>>
>> import org.apache.camel.ContextTestSupport;
>> import org.apache.camel.ServiceStatus;
>> import org.apache.camel.builder.RouteBuilder;
>> import org.apache.camel.component.mock.MockEndpoint;
>>
>> /**
>>  * @version
>>  */
>> public class RouteRemoveTest extends ContextTestSupport {
>>
>>    public void testRemove() throws Exception {
>>        MockEndpoint mock = getMockEndpoint("mock:result");
>>        mock.expectedBodiesReceived("A");
>>
>>        template.sendBody("seda:foo", "A");
>>
>>        assertMockEndpointsSatisfied();
>>
>>        assertEquals("Started", context.getRouteStatus("foo").name());
>>        assertEquals("Started", context.getRouteStatus("bar").name());
>>        assertEquals(2, context.getRoutes().size());
>>
>>        // must be stopped so we cant remove
>>        boolean removed = context.removeRoute("foo");
>>        assertFalse(removed);
>>
>>        assertEquals(2, context.getRoutes().size());
>>        assertEquals("Started", context.getRouteStatus("foo").name());
>>        assertEquals("Started", context.getRouteStatus("bar").name());
>>
>>        // remove route then
>>        context.stopRoute("foo");
>>        removed = context.removeRoute("foo");
>>        assertTrue(removed);
>>
>>        assertNull(context.getRouteStatus("bar"));
>>        assertEquals(0, context.getRoutes().size());
>>        assertNull(context.getRouteStatus("foo"));
>>    }
>>
>>    @Override
>>    protected RouteBuilder createRouteBuilder() throws Exception {
>>        return new RouteBuilder() {
>>            @Override
>>            public void configure() throws Exception {
>>
>>
>> from("seda:foo?multipleConsumers=true").routeId("foo").to("log:foo").to("mock:result");
>>
>>
>> from("seda:foo?multipleConsumers=true").routeId("bar").to("log:foo").to("mock:result");
>>             }
>>        };
>>    }
>> }
>>
>> -----
>> ---------------------------------------------------------
>> Ashwin Karpe
>> Apache Camel Committer & Sr Principal Consultant
>> FUSESource (a Progress Software Corporation subsidiary)
>> http://fusesource.com
>>
>> Blog: http://opensourceknowledge.blogspot.com
>> ---------------------------------------------------------
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Removing-routes-programmatically-tp4556741p4561468.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Mime
View raw message