title: SpringAMQP errorHandler and returnExceptions problem
body: <p>i am not sure my understanding to errorHandler and returnExceptions is right or not.</p>
  
  <p>but here is my goal: i sent a message from App_A, use @RabbitListener to receive message in App_B.</p>
  
  <p>according to the doc
  <a href="https://docs.spring.io/spring-amqp/docs/2.1.3.BUILD-SNAPSHOT/reference/html/_reference.html#annotation-error-handling" rel="nofollow noreferrer">https://docs.spring.io/spring-amqp/docs/2.1.3.BUILD-SNAPSHOT/reference/html/_reference.html#annotation-error-handling</a></p>
  
  <p>i assume if APP_B has a business exception during process the message,through set errorHandler and returnExceptions in a right way on @RabbitListener can let the exception back to App_A.</p>
  
  <p>do I understood correctly?</p>
  
  <p>if i am rigth, how to use it in a right way?</p>
  
  <p>with my code, i get nothing in APP_A .</p>
  
  <p>here is my code in APP_B</p>
  
  <p>errorHandler:</p>
  
  <pre><code>@Component(value = "errorHandler")
  public class ErrorHandler implements RabbitListenerErrorHandler {
  
      @Override
      public Object handleError(Message arg0, org.springframework.messaging.Message&lt;?&gt; arg1,
              ListenerExecutionFailedException arg2) throws ListenerExecutionFailedException {
          throw new ListenerExecutionFailedException("msg", arg2, null);
      }
  
  }
  </code></pre>
  
  <p>RabbitListener:</p>
  
  <pre><code>@RabbitListener(
          bindings = @QueueBinding(
              value = @Queue(value = "MRO.updateBaseInfo.queue", durable = "true"),
              exchange = @Exchange(name = "MRO_Exchange", type = ExchangeTypes.DIRECT, durable = "true"),
              key = "baseInfoUpdate"
          ),
  //      errorHandler = "errorHandler",
          returnExceptions = "true"
      )
      public void receiveLocationChangeMessage(String message){
          BaseUpdateMessage newBaseInfo = JSON.parseObject(message, BaseUpdateMessage.class);
          dao.upDateBaseInfo(newBaseInfo);
      }
  </code></pre>
  
  <p>and code in APP_A</p>
  
  <pre><code>@Component
  public class MessageSender {
  
      @Autowired
      private RabbitTemplate rabbitTemplate;
  
      public void editBaseInfo(BaseUpdateMessage message)throws Exception {
          //and i am not sure set RemoteInvocationAwareMessageConverterAdapter in this way is right 
          rabbitTemplate.setMessageConverter(new RemoteInvocationAwareMessageConverterAdapter());
  
          rabbitTemplate.convertAndSend("MRO_Exchange", "baseInfoUpdate", JSON.toJSONString(message));
      }
  
  }
  </code></pre>
  
  <p>i am very confuse with three points:</p>
  
  <p>1)do i have to use errorHandler and returnExceptions at the same time? i thought errorHandler is something like a postprocessor that let me custom  exception.if i don't need a custom exception can i just set returnExceptions with out errorHandler ?</p>
  
  <p>2)should the method annotated with @RabbitListener return something or void is just fine?</p>
  
  <p>3)in the sender side(my situation is APP_A), does have any specific config to catch the exception?</p>
  
  <p>my workspace environment:</p>
  
  <p>Spring boot 2.1.0</p>
  
  <p>rabbitMQ server 3.7.8 on docker</p>