@Override public Tuple2<ConsumerEndpointFactoryBean, BarrierMessageHandler> doGet() { this.handler = new BarrierMessageHandler(this.timeout, this.outputProcessor, this.correlationStrategy); if (!this.adviceChain.isEmpty()) { this.handler.setAdviceChain(this.adviceChain); } this.handler.setRequiresReply(this.requiresReply); this.handler.setSendTimeout(this.sendTimeout); this.handler.setAsync(this.async); this.handler.setOrder(this.order); return super.doGet(); }
@ServiceActivator(inputChannel = "in") @Bean public BarrierMessageHandler barrier() { BarrierMessageHandler barrier = new BarrierMessageHandler(10000); barrier.setOutputChannel(out()); return barrier; }
@Test public void testExceptionReply() throws Exception { final BarrierMessageHandler handler = new BarrierMessageHandler(10000); QueueChannel outputChannel = new QueueChannel(); handler.setOutputChannel(outputChannel);
@Test public void testRequestBeforeReply() throws Exception { final BarrierMessageHandler handler = new BarrierMessageHandler(10000); QueueChannel outputChannel = new QueueChannel(); handler.setOutputChannel(outputChannel);
@Test public void testReplyBeforeRequest() throws Exception { final BarrierMessageHandler handler = new BarrierMessageHandler(10000); QueueChannel outputChannel = new QueueChannel(); handler.setOutputChannel(outputChannel); handler.setBeanFactory(mock(BeanFactory.class)); handler.afterPropertiesSet(); ExecutorService exec = Executors.newSingleThreadExecutor(); exec.execute(() -> handler.trigger(MessageBuilder.withPayload("bar").setCorrelationId("foo").build())); Map<?, ?> suspensions = TestUtils.getPropertyValue(handler, "suspensions", Map.class); int n = 0; while (n++ < 100 && suspensions.size() == 0) { Thread.sleep(100); } assertTrue("suspension did not appear in time", n < 100); handler.handleMessage(MessageBuilder.withPayload("foo").setCorrelationId("foo").build()); Message<?> received = outputChannel.receive(10000); assertNotNull(received); List<?> result = (ArrayList<?>) received.getPayload(); assertEquals("foo", result.get(0)); assertEquals("bar", result.get(1)); assertEquals(0, suspensions.size()); exec.shutdownNow(); }
@Test public void testLateReply() throws Exception { final BarrierMessageHandler handler = new BarrierMessageHandler(0); QueueChannel outputChannel = new QueueChannel(); QueueChannel discardChannel = new QueueChannel();
@Test public void testRequiresReply() throws Exception { final BarrierMessageHandler handler = new BarrierMessageHandler(0); QueueChannel outputChannel = new QueueChannel(); handler.setOutputChannel(outputChannel); handler.setBeanFactory(mock(BeanFactory.class)); handler.setRequiresReply(true); handler.afterPropertiesSet(); try { handler.handleMessage(MessageBuilder.withPayload("foo").setCorrelationId("foo").build()); fail("exception expected"); } catch (Exception e) { assertThat(e, Matchers.instanceOf(ReplyRequiredException.class)); } }
@Override public Tuple2<ConsumerEndpointFactoryBean, BarrierMessageHandler> doGet() { this.handler = new BarrierMessageHandler(this.timeout, this.outputProcessor, this.correlationStrategy); if (!this.adviceChain.isEmpty()) { this.handler.setAdviceChain(this.adviceChain); } this.handler.setRequiresReply(this.requiresReply); this.handler.setSendTimeout(this.sendTimeout); this.handler.setAsync(this.async); this.handler.setOrder(this.order); return super.doGet(); }
@Override public Tuple2<ConsumerEndpointFactoryBean, BarrierMessageHandler> doGet() { BarrierMessageHandler barrierMessageHandler = new BarrierMessageHandler(this.timeout, this.outputProcessor, this.correlationStrategy); barrierMessageHandler.setAdviceChain(this.adviceChain); barrierMessageHandler.setRequiresReply(this.requiresReply); barrierMessageHandler.setSendTimeout(this.sendTimeout); barrierMessageHandler.setAsync(this.async); barrierMessageHandler.setOrder(this.order); this.endpointFactoryBean.setHandler(barrierMessageHandler); return Tuples.of(this.endpointFactoryBean, barrierMessageHandler); }
@Override public Tuple2<ConsumerEndpointFactoryBean, BarrierMessageHandler> doGet() { BarrierMessageHandler barrierMessageHandler = new BarrierMessageHandler(this.timeout, this.outputProcessor, this.correlationStrategy); barrierMessageHandler.setAdviceChain(this.adviceChain); barrierMessageHandler.setRequiresReply(this.requiresReply); barrierMessageHandler.setSendTimeout(this.sendTimeout); barrierMessageHandler.setAsync(this.async); barrierMessageHandler.setOrder(this.order); this.endpointFactoryBean.setHandler(barrierMessageHandler); return Tuples.of(this.endpointFactoryBean, barrierMessageHandler); }