List of usage examples for org.springframework.integration.handler.advice RetryStateGenerator RetryStateGenerator
RetryStateGenerator
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void defaultStatefulRetrySucceedOnThirdTry() { final AtomicInteger counter = new AtomicInteger(2); AbstractReplyProducingMessageHandler handler = new AbstractReplyProducingMessageHandler() { @Override/*w w w . java2s . c om*/ protected Object handleRequestMessage(Message<?> requestMessage) { if (counter.getAndDecrement() > 0) { throw new RuntimeException("foo"); } return "bar"; } }; QueueChannel replies = new QueueChannel(); handler.setOutputChannel(replies); RequestHandlerRetryAdvice advice = new RequestHandlerRetryAdvice(); advice.setRetryStateGenerator(new RetryStateGenerator() { public RetryState determineRetryState(Message<?> message) { return new DefaultRetryState(message.getHeaders().getId()); } }); List<Advice> adviceChain = new ArrayList<Advice>(); adviceChain.add(advice); handler.setAdviceChain(adviceChain); handler.afterPropertiesSet(); Message<String> message = new GenericMessage<String>("Hello, world!"); for (int i = 0; i < 3; i++) { try { handler.handleMessage(message); } catch (Exception e) { assertTrue(i < 2); } } assertTrue(counter.get() == -1); Message<?> reply = replies.receive(1000); assertNotNull(reply); assertEquals("bar", reply.getPayload()); }
From source file:org.springframework.integration.handler.advice.AdvisedMessageHandlerTests.java
@Test public void defaultStatefulRetryRecoverAfterThirdTry() { final AtomicInteger counter = new AtomicInteger(3); AbstractReplyProducingMessageHandler handler = new AbstractReplyProducingMessageHandler() { @Override/*from w ww . j a v a2 s . c o m*/ protected Object handleRequestMessage(Message<?> requestMessage) { if (counter.getAndDecrement() > 0) { throw new RuntimeException("foo"); } return "bar"; } }; QueueChannel replies = new QueueChannel(); handler.setOutputChannel(replies); RequestHandlerRetryAdvice advice = new RequestHandlerRetryAdvice(); advice.setRetryStateGenerator(new RetryStateGenerator() { public RetryState determineRetryState(Message<?> message) { return new DefaultRetryState(message.getHeaders().getId()); } }); defaultStatefulRetryRecoverAfterThirdTryGuts(counter, handler, replies, advice); }