|
57 | 57 | import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; |
58 | 58 | import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; |
59 | 59 | import org.springframework.amqp.rabbit.listener.adapter.ReplyingMessageListener; |
| 60 | +import org.springframework.amqp.support.converter.MessageConversionException; |
60 | 61 | import org.springframework.amqp.support.converter.SimpleMessageConverter; |
61 | 62 | import org.springframework.amqp.support.postprocessor.GUnzipPostProcessor; |
62 | 63 | import org.springframework.amqp.support.postprocessor.GZipPostProcessor; |
@@ -394,6 +395,29 @@ public void testStopCancelled() throws Exception { |
394 | 395 | assertThat(callback.result).isNull(); |
395 | 396 | } |
396 | 397 |
|
| 398 | + @Test |
| 399 | + @DirtiesContext |
| 400 | + public void testConversionException() throws InterruptedException { |
| 401 | + this.asyncTemplate.getRabbitTemplate().setMessageConverter(new SimpleMessageConverter() { |
| 402 | + @Override |
| 403 | + public Object fromMessage(Message message) throws MessageConversionException { |
| 404 | + throw new MessageConversionException("Failed to convert message"); |
| 405 | + } |
| 406 | + }); |
| 407 | + |
| 408 | + RabbitConverterFuture<String> replyFuture = this.asyncTemplate.convertSendAndReceive("conversionException"); |
| 409 | + |
| 410 | + final CountDownLatch cdl = new CountDownLatch(1); |
| 411 | + final AtomicReference<Object> resultRef = new AtomicReference<>(); |
| 412 | + replyFuture.whenComplete((result, ex) -> { |
| 413 | + resultRef.set(result); |
| 414 | + cdl.countDown(); |
| 415 | + }); |
| 416 | + assertThat(cdl.await(10, TimeUnit.SECONDS)).isTrue(); |
| 417 | + assertThat(replyFuture).isCompletedExceptionally(); |
| 418 | + assertThat(resultRef.get()).isNull(); |
| 419 | + } |
| 420 | + |
397 | 421 | @Test |
398 | 422 | void ctorCoverage() { |
399 | 423 | AsyncRabbitTemplate template = new AsyncRabbitTemplate(mock(ConnectionFactory.class), "ex", "rk"); |
|
0 commit comments