@Bean public RabbitListenerErrorHandler throwANewException() { return (m, sm, e) -> { throw new RuntimeException("from error handler", e.getCause()); }; }
if (ex.getCause() instanceof NoSuchMethodException) { throw new FatalListenerExecutionException("Invalid listener", ex);
if (ex.getCause() instanceof NoSuchMethodException) { throw new FatalListenerExecutionException("Invalid listener", ex);
returnOrThrow(amqpMessage, channel, message, e.getCause(), e);
returnOrThrow(amqpMessage, channel, message, e.getCause(), e);
@Test public void exceptionInListenerBadReturnExceptionSetting() { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("fail", true, String.class); try { listener.onMessage(message, channel); fail("Should have thrown an exception"); } catch (ListenerExecutionFailedException ex) { assertEquals(IllegalArgumentException.class, ex.getCause().getClass()); assertEquals("Expected test exception", ex.getCause().getMessage()); } catch (Exception ex) { fail("Should not have thrown an " + ex.getClass().getSimpleName()); } }
@Test public void exceptionInListener() { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("fail", String.class); try { listener.onMessage(message, channel); fail("Should have thrown an exception"); } catch (ListenerExecutionFailedException ex) { assertEquals(IllegalArgumentException.class, ex.getCause().getClass()); assertEquals("Expected test exception", ex.getCause().getMessage()); } catch (Exception ex) { fail("Should not have thrown an " + ex.getClass().getSimpleName()); } }
@Test public void exceptionInInvocation() { org.springframework.amqp.core.Message message = MessageTestUtils.createTextMessage("foo"); Channel channel = mock(Channel.class); MessagingMessageListenerAdapter listener = getSimpleInstance("wrongParam", Integer.class); try { listener.onMessage(message, channel); fail("Should have thrown an exception"); } catch (ListenerExecutionFailedException ex) { assertEquals(org.springframework.messaging.converter.MessageConversionException.class, ex.getCause().getClass()); } catch (Exception ex) { fail("Should not have thrown an " + ex.getClass().getSimpleName()); } }