Skip to content

Commit

Permalink
CAMEL-10290: Move RoutePolicy initialization logic in onStart
Browse files Browse the repository at this point in the history
  • Loading branch information
lburgazzoli committed Sep 5, 2016
1 parent d409f33 commit 642128b
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import com.orbitz.consul.model.kv.Value;
import com.orbitz.consul.model.session.ImmutableSession;
import com.orbitz.consul.option.QueryOptions;
import org.apache.camel.Exchange;
import org.apache.camel.NonManagedService;
import org.apache.camel.Route;
import org.apache.camel.support.RoutePolicySupport;
Expand Down Expand Up @@ -84,19 +83,9 @@ public ConsulRoutePolicy(Consul consul) {
}

@Override
public void onExchangeBegin(Route route, Exchange exchange) {
if (leader.get()) {
if (shouldStopConsumer) {
startConsumer(route);
}
} else {
if (shouldStopConsumer) {
stopConsumer(route);
}

exchange.setException(new IllegalStateException(
"Consul based route policy prohibits processing exchanges, stopping route and failing the exchange")
);
public void onStart(Route route) {
if (!leader.get() && shouldStopConsumer) {
stopConsumer(route);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
/**
* 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.component.consul.policy;

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

public final class ConsulRoutePolicyMain {

private ConsulRoutePolicyMain() {
}

public static void main(final String[] args) throws Exception {
Main main = new Main();
main.addRouteBuilder(new RouteBuilder() {
public void configure() {
ConsulRoutePolicy policy = new ConsulRoutePolicy();
policy.setServiceName(args[0]);
policy.setTtl(15);

fromF("file:///tmp/camel?delete=true")
.routeId(args[1])
.routePolicy(policy)
.setHeader("ConsulRouteID", simple("${routeId}"))
.setHeader("ConsulServiceName", constant(args[0]))
.to("log:org.apache.camel.component.etcd?level=INFO&showAll=true");
}
});

main.run();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ appender.out.layout.pattern = [%30.30t] %-30.30c{1} %-5p %m%n
logger.consul.name = org.apache.camel.component.consul
logger.consul.level = DEBUG
rootLogger.level = INFO
rootLogger.appenderRef.out.ref = out
rootLogger.appenderRef.out.ref = file

0 comments on commit 642128b

Please sign in to comment.