Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.apache.camel.processor;
- import org.apache.camel.AsyncCallback;
- import org.apache.camel.ContextTestSupport;
- import org.apache.camel.Exchange;
- import org.apache.camel.builder.RouteBuilder;
- import org.apache.camel.component.mock.MockEndpoint;
- import org.apache.camel.processor.loadbalancer.LoadBalancerSupport;
- public class CustomLoadBalanceTest extends ContextTestSupport {
- protected MockEndpoint x;
- protected MockEndpoint y;
- protected MockEndpoint z;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- x = getMockEndpoint("mock:x");
- y = getMockEndpoint("mock:y");
- z = getMockEndpoint("mock:z");
- }
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- public void configure() {
- // START SNIPPET: e1
- from("direct:start")
- // using our custom load balancer
- .loadBalance(new MyLoadBalancer())
- .to("mock:x", "mock:y", "mock:z");
- // END SNIPPET: e1
- }
- };
- }
- public void testCustomLoadBalancer() throws Exception {
- x.expectedBodiesReceived("x", "x", "x");
- y.expectedBodiesReceived("y", "y");
- z.expectedBodiesReceived("foo", "bar", "baz");
- template.sendBody("direct:start", "x");
- template.sendBody("direct:start", "y");
- template.sendBody("direct:start", "foo");
- template.sendBody("direct:start", "bar");
- template.sendBody("direct:start", "y");
- template.sendBody("direct:start", "x");
- template.sendBody("direct:start", "x");
- template.sendBody("direct:start", "baz");
- assertMockEndpointsSatisfied();
- }
- // START SNIPPET: e2
- public static class MyLoadBalancer extends LoadBalancerSupport {
- public boolean process(Exchange exchange, AsyncCallback callback) {
- String body = exchange.getIn().getBody(String.class);
- try {
- if ("x".equals(body)) {
- getProcessors().get(0).process(exchange);
- } else if ("y".equals(body)) {
- getProcessors().get(1).process(exchange);
- } else {
- getProcessors().get(2).process(exchange);
- }
- } catch (Throwable e) {
- exchange.setException(e);
- }
- callback.done(true);
- return true;
- }
- }
- // END SNIPPET: e2
- }
- from("jetty://http://0.0.0.0:8080/test")
- .loadBalance(new MyLoadBalancer())
- .to("http://tcserver1:8080/hello","http://tcpserver2:8080/hello","http://tcpserver3:8080/hello");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement