Search code examples
spring-rabbit

spring-rabbit - XSD lacks rabbit:listener error-handler?


Spring Rabbit has RabbitListenerErrorHandler which is configurable via Java @Configuration via @RabbitListener. Example

@RabbitListener(containerFactory="listenerContainerFactory",
            queues="${listener.queue}",
            errorHandler="listenerErrorHandler")

Where is the corresponding "error-handler" attribute of rabbit:listener element in XSD schema?

XML configuration example. Note - the lowever level "error-handler" attribute for rabbit:listener-container exists.

<rabbit:listener-container connection-factory="connectionFactory"
            error-handler="containerErrorHandler">
        <rabbit:listener queues="${listener.queue}" ref="rabbitListener" method="handle" />
    </rabbit:listener-container>

The missing error-handler:

<rabbit:listener error-handler="listenerErrorHandler" ...  />

Solution

  • @RabbitListener uses a more advanced listener adapter (MessagingMessageListenerAdapter) that supports RabbitListenerErrorHandler.

    The legacy MessageListenerAdapter (used by the XML config) does not support it.

    The annotation model was added many years later.