/** * Create a channel with default {@link RoundRobinLoadBalancingStrategy} */ public DirectChannel() { this(new RoundRobinLoadBalancingStrategy()); }
/** * Create an ExecutorChannel that delegates to the provided * {@link Executor} when dispatching Messages. * <p> * The Executor must not be null. * @param executor The executor. */ public ExecutorChannel(Executor executor) { this(executor, new RoundRobinLoadBalancingStrategy()); }
@Override protected AbstractDispatcher createDispatcher() { UnicastingDispatcher unicastingDispatcher = new UnicastingDispatcher(); unicastingDispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); return unicastingDispatcher; }
@Before public void setupDispatcher() { this.dispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); }
private void configureDispatcher(boolean isPubSub) { if (isPubSub) { BroadcastingDispatcher broadcastingDispatcher = new BroadcastingDispatcher(true); broadcastingDispatcher.setBeanFactory(this.getBeanFactory()); this.dispatcher = broadcastingDispatcher; } else { UnicastingDispatcher unicastingDispatcher = new UnicastingDispatcher(); unicastingDispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); this.dispatcher = unicastingDispatcher; } if (this.maxSubscribers == null) { this.maxSubscribers = this.getIntegrationProperty(isPubSub ? IntegrationProperties.CHANNELS_MAX_BROADCAST_SUBSCRIBERS : IntegrationProperties.CHANNELS_MAX_UNICAST_SUBSCRIBERS, Integer.class); } this.dispatcher.setMaxSubscribers(this.maxSubscribers); }
/** * Create a channel with default {@link RoundRobinLoadBalancingStrategy} */ public DirectChannel() { this(new RoundRobinLoadBalancingStrategy()); }
@Test public void directChannelAndRoundRobinDispatcher() { GenericApplicationContext context = TestUtils.createTestApplicationContext(); context.registerBeanDefinition("postProcessor", new RootBeanDefinition(MessagingAnnotationPostProcessor.class)); RootBeanDefinition channelDefinition = new RootBeanDefinition(DirectChannel.class); channelDefinition.getConstructorArgumentValues().addGenericArgumentValue(new RoundRobinLoadBalancingStrategy()); context.registerBeanDefinition("input", channelDefinition); RootBeanDefinition testBeanDefinition = new RootBeanDefinition(TestBean.class); testBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue(1000); context.registerBeanDefinition("testBean", testBeanDefinition); context.refresh(); TestBean testBean = (TestBean) context.getBean("testBean"); MessageChannel channel = (MessageChannel) context.getBean("input"); channel.send(new GenericMessage<String>("test-1")); channel.send(new GenericMessage<String>("test-2")); channel.send(new GenericMessage<String>("test-3")); channel.send(new GenericMessage<String>("test-4")); channel.send(new GenericMessage<String>("test-5")); List<Integer> calls = testBean.calls; assertEquals(5, calls.size()); assertEquals(1, calls.get(0).intValue()); assertEquals(2, calls.get(1).intValue()); assertEquals(3, calls.get(2).intValue()); assertEquals(4, calls.get(3).intValue()); assertEquals(5, calls.get(4).intValue()); context.close(); }
/** * Create an ExecutorChannel that delegates to the provided * {@link Executor} when dispatching Messages. * <p> * The Executor must not be null. * @param executor The executor. */ public ExecutorChannel(Executor executor) { this(executor, new RoundRobinLoadBalancingStrategy()); }
@Before public void initialize() { dispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); executor.setCorePoolSize(10); executor.setMaxPoolSize(10); executor.initialize(); }
ConcurrentTaskExecutor taskExecutor = new ConcurrentTaskExecutor(exec); ExecutorChannel channel = new ExecutorChannel( taskExecutor, new RoundRobinLoadBalancingStrategy()); CountDownLatch latch = new CountDownLatch(numberOfMessages); TestHandler handler1 = new TestHandler(latch);
ConcurrentTaskExecutor taskExecutor = new ConcurrentTaskExecutor(exec); ExecutorChannel channel = new ExecutorChannel( taskExecutor, new RoundRobinLoadBalancingStrategy()); CountDownLatch latch = new CountDownLatch(numberOfMessages); TestHandler handler1 = new TestHandler(latch);
doThrow(new MessageRejectedException(message, null)).when(handlerA).handleMessage(message); UnicastingDispatcher dispatcher = channel.getDispatcher(); dispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); dispatcher.addHandler(handlerA); dispatcher.addHandler(handlerB);
@Override protected AbstractDispatcher createDispatcher() { UnicastingDispatcher unicastingDispatcher = new UnicastingDispatcher(); unicastingDispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); return unicastingDispatcher; }
private void configureDispatcher(boolean isPubSub) { if (isPubSub) { BroadcastingDispatcher broadcastingDispatcher = new BroadcastingDispatcher(true); broadcastingDispatcher.setBeanFactory(this.getBeanFactory()); this.dispatcher = broadcastingDispatcher; } else { UnicastingDispatcher unicastingDispatcher = new UnicastingDispatcher(); unicastingDispatcher.setLoadBalancingStrategy(new RoundRobinLoadBalancingStrategy()); this.dispatcher = unicastingDispatcher; } if (this.maxSubscribers == null) { this.maxSubscribers = this.getIntegrationProperty(isPubSub ? IntegrationProperties.CHANNELS_MAX_BROADCAST_SUBSCRIBERS : IntegrationProperties.CHANNELS_MAX_UNICAST_SUBSCRIBERS, Integer.class); } this.dispatcher.setMaxSubscribers(this.maxSubscribers); }