List of usage examples for org.springframework.integration.channel QueueChannel receive
@Override @Nullable public Message<?> receive(long timeout)
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void errorMessageSendingRecovererTestsNoThrowable() { AbstractReplyProducingMessageHandler handler = new AbstractReplyProducingMessageHandler() { @Override//from ww w . j a v a 2s.c o m protected Object handleRequestMessage(Message<?> requestMessage) { throw new RuntimeException("fooException"); } }; QueueChannel errors = new QueueChannel(); RequestHandlerRetryAdvice advice = new RequestHandlerRetryAdvice(); ErrorMessageSendingRecoverer recoverer = new ErrorMessageSendingRecoverer(errors); advice.setRecoveryCallback(recoverer); RetryTemplate retryTemplate = new RetryTemplate(); retryTemplate.setRetryPolicy(new SimpleRetryPolicy() { @Override public boolean canRetry(RetryContext context) { return false; } }); advice.setRetryTemplate(retryTemplate); advice.afterPropertiesSet(); List<Advice> adviceChain = new ArrayList<Advice>(); adviceChain.add(advice); handler.setAdviceChain(adviceChain); handler.afterPropertiesSet(); Message<String> message = new GenericMessage<String>("Hello, world!"); handler.handleMessage(message); Message<?> error = errors.receive(1000); assertNotNull(error); assertTrue(error.getPayload() instanceof ErrorMessageSendingRecoverer.RetryExceptionNotAvailableException); assertNotNull(((MessagingException) error.getPayload()).getFailedMessage()); assertSame(message, ((MessagingException) error.getPayload()).getFailedMessage()); }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void testINT2858RetryAdviceAsNestedInAdviceChain() { final AtomicInteger counter = new AtomicInteger(0); AbstractReplyProducingMessageHandler handler = new AbstractReplyProducingMessageHandler() { @Override/* ww w . j a v a2 s . c om*/ protected Object handleRequestMessage(Message<?> requestMessage) { return "foo"; } }; QueueChannel replies = new QueueChannel(); handler.setOutputChannel(replies); List<Advice> adviceChain = new ArrayList<Advice>(); ExpressionEvaluatingRequestHandlerAdvice expressionAdvice = new ExpressionEvaluatingRequestHandlerAdvice(); expressionAdvice.setBeanFactory(mock(BeanFactory.class)); // MessagingException / RuntimeException expressionAdvice.setOnFailureExpression("#exception.cause.message"); expressionAdvice.setReturnFailureExpressionResult(true); final AtomicInteger outerCounter = new AtomicInteger(); adviceChain.add(new AbstractRequestHandlerAdvice() { @Override protected Object doInvoke(ExecutionCallback callback, Object target, Message<?> message) throws Exception { outerCounter.incrementAndGet(); return callback.execute(); } }); adviceChain.add(expressionAdvice); adviceChain.add(new RequestHandlerRetryAdvice()); adviceChain.add(new MethodInterceptor() { public Object invoke(MethodInvocation invocation) throws Throwable { throw new RuntimeException("intentional: " + counter.incrementAndGet()); } }); handler.setAdviceChain(adviceChain); handler.afterPropertiesSet(); handler.handleMessage(new GenericMessage<String>("test")); Message<?> receive = replies.receive(1000); assertNotNull(receive); assertEquals("intentional: 3", receive.getPayload()); assertEquals(1, outerCounter.get()); }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void testINT2858ExpressionAdviceWithSendFailureOnEachRetry() { final AtomicInteger counter = new AtomicInteger(0); AbstractReplyProducingMessageHandler handler = new AbstractReplyProducingMessageHandler() { @Override/*from www.j a va 2s . c o m*/ protected Object handleRequestMessage(Message<?> requestMessage) { return "foo"; } }; QueueChannel errors = new QueueChannel(); List<Advice> adviceChain = new ArrayList<Advice>(); ExpressionEvaluatingRequestHandlerAdvice expressionAdvice = new ExpressionEvaluatingRequestHandlerAdvice(); expressionAdvice.setBeanFactory(mock(BeanFactory.class)); expressionAdvice.setOnFailureExpression("#exception.message"); expressionAdvice.setFailureChannel(errors); adviceChain.add(new RequestHandlerRetryAdvice()); adviceChain.add(expressionAdvice); adviceChain.add(new MethodInterceptor() { public Object invoke(MethodInvocation invocation) throws Throwable { throw new RuntimeException("intentional: " + counter.incrementAndGet()); } }); handler.setAdviceChain(adviceChain); handler.afterPropertiesSet(); try { handler.handleMessage(new GenericMessage<String>("test")); } catch (Exception e) { assertEquals("intentional: 3", e.getCause().getMessage()); } for (int i = 1; i <= 3; i++) { Message<?> receive = errors.receive(1000); assertNotNull(receive); assertEquals("intentional: " + i, ((MessageHandlingExpressionEvaluatingAdviceException) receive.getPayload()) .getEvaluationResult()); } assertNull(errors.receive(1)); }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
/** * Verify that Errors such as OOM are properly propagated and we suppress the * ThrowableHolderException from the output message. *///from w ww . j a v a 2s .co m @Test public void throwableProperlyPropagatedAndReported() throws Exception { QueueChannel errors = new QueueChannel(); ExpressionEvaluatingRequestHandlerAdvice expressionAdvice = new ExpressionEvaluatingRequestHandlerAdvice(); expressionAdvice.setOnFailureExpression("'foo'"); expressionAdvice.setFailureChannel(errors); Throwable theThrowable = new Throwable("foo"); ProxyFactory proxyFactory = new ProxyFactory(new Foo(theThrowable)); proxyFactory.addAdvice(expressionAdvice); Bar fooHandler = (Bar) proxyFactory.getProxy(); try { fooHandler.handleRequestMessage(new GenericMessage<String>("foo")); fail("Expected throwable"); } catch (Throwable t) { assertSame(theThrowable, t); ErrorMessage error = (ErrorMessage) errors.receive(1000); assertNotNull(error); assertSame(theThrowable, error.getPayload().getCause()); } }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
public void filterDiscardNoAdvice() { MessageFilter filter = new MessageFilter(new MessageSelector() { @Override//from w w w. j av a2 s .c o m public boolean accept(Message<?> message) { return false; } }); QueueChannel discardChannel = new QueueChannel(); filter.setDiscardChannel(discardChannel); filter.handleMessage(new GenericMessage<String>("foo")); assertNotNull(discardChannel.receive(0)); }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void filterDiscardWithinAdvice() { MessageFilter filter = new MessageFilter(new MessageSelector() { @Override//from ww w. j ava2s . c o m public boolean accept(Message<?> message) { return false; } }); final QueueChannel discardChannel = new QueueChannel(); filter.setDiscardChannel(discardChannel); List<Advice> adviceChain = new ArrayList<Advice>(); final AtomicReference<Message<?>> discardedWithinAdvice = new AtomicReference<Message<?>>(); adviceChain.add(new AbstractRequestHandlerAdvice() { @Override protected Object doInvoke(ExecutionCallback callback, Object target, Message<?> message) throws Exception { Object result = callback.execute(); discardedWithinAdvice.set(discardChannel.receive(0)); return result; } }); filter.setAdviceChain(adviceChain); filter.afterPropertiesSet(); filter.handleMessage(new GenericMessage<String>("foo")); assertNotNull(discardedWithinAdvice.get()); assertNull(discardChannel.receive(0)); }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void filterDiscardOutsideAdvice() { MessageFilter filter = new MessageFilter(new MessageSelector() { @Override// w w w . j av a2 s . c om public boolean accept(Message<?> message) { return false; } }); final QueueChannel discardChannel = new QueueChannel(); filter.setDiscardChannel(discardChannel); List<Advice> adviceChain = new ArrayList<Advice>(); final AtomicReference<Message<?>> discardedWithinAdvice = new AtomicReference<Message<?>>(); final AtomicBoolean adviceCalled = new AtomicBoolean(); adviceChain.add(new AbstractRequestHandlerAdvice() { @Override protected Object doInvoke(ExecutionCallback callback, Object target, Message<?> message) throws Exception { Object result = callback.execute(); discardedWithinAdvice.set(discardChannel.receive(0)); adviceCalled.set(true); return result; } }); filter.setAdviceChain(adviceChain); filter.setDiscardWithinAdvice(false); filter.afterPropertiesSet(); filter.handleMessage(new GenericMessage<String>("foo")); assertTrue(adviceCalled.get()); assertNull(discardedWithinAdvice.get()); assertNotNull(discardChannel.receive(0)); }
From source file:org.springframework.integration.handler.AsyncHandlerTests.java
@Test public void testGoodResultWithReplyChannelHeader() { this.whichTest = 0; this.handler.setOutputChannel(null); QueueChannel replyChannel = new QueueChannel(); Message<?> message = MessageBuilder.withPayload("foo").setReplyChannel(replyChannel).build(); this.handler.handleMessage(message); assertNull(replyChannel.receive(0)); this.latch.countDown(); Message<?> received = replyChannel.receive(10000); assertNotNull(received);// www.j a v a2 s .com assertEquals("reply", received.getPayload()); assertNull(this.failedCallbackException); }
From source file:org.springframework.integration.handler.AsyncHandlerTests.java
@Test public void testGoodResultWithNoReplyChannelHeaderNoOutput() throws Exception { this.whichTest = 0; this.handler.setOutputChannel(null); QueueChannel errorChannel = new QueueChannel(); Message<String> message = MessageBuilder.withPayload("foo").setErrorChannel(errorChannel).build(); this.handler.handleMessage(message); assertNull(this.output.receive(0)); this.latch.countDown(); Message<?> errorMessage = errorChannel.receive(1000); assertNotNull(errorMessage);/*from www . j a v a 2 s . com*/ assertThat(errorMessage.getPayload(), instanceOf(DestinationResolutionException.class)); assertEquals("no output-channel or replyChannel header available", ((Throwable) errorMessage.getPayload()).getMessage()); assertNull(((MessagingException) errorMessage.getPayload()).getFailedMessage()); assertNotNull(this.failedCallbackException); assertThat(this.failedCallbackException.getMessage(), containsString("or replyChannel header")); }
From source file:org.springframework.integration.handler.AsyncHandlerTests.java
@Test public void testRuntimeException() { QueueChannel errorChannel = new QueueChannel(); Message<String> message = MessageBuilder.withPayload("foo").setErrorChannel(errorChannel).build(); this.handler.handleMessage(message); assertNull(this.output.receive(0)); this.whichTest = 1; this.latch.countDown(); Message<?> received = errorChannel.receive(10000); assertNotNull(received);//from w w w . j a v a 2 s .c o m assertThat(received.getPayload(), instanceOf(MessageHandlingException.class)); assertEquals("foo", ((Throwable) received.getPayload()).getCause().getMessage()); assertSame(message, ((MessagingException) received.getPayload()).getFailedMessage()); assertNull(this.failedCallbackException); }