Example usage for org.springframework.integration.channel QueueChannel receive

List of usage examples for org.springframework.integration.channel QueueChannel receive

Introduction

In this page you can find the example usage for org.springframework.integration.channel QueueChannel receive.

Prototype

@Override 
@Nullable
public Message<?> receive(long timeout) 

Source Link

Document

Receive the first available message from this channel.

Usage

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);
}