在mq micronaut 2.2.1中处理使用者异常

zqry0prt  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(282)

尝试在micronaut 2.2.1中实现处理使用者异常https://micronaut-projects.github.io/micronaut-rabbitmq/latest/guide/#consumerexceptions
根据文件
如果使用者bean实现rabbitlistenerexceptionhandler,那么异常将被发送到方法实现。
如果使用者bean没有实现rabbitlistenerexceptionhandler,那么异常将被路由到主异常处理程序bean。要重写默认的异常处理程序,请使用指定为@primary的实现替换defaultrabbitlistenerexceptionhandler。

@Singleton
@Primary
public class RabbitListenerExceptionHandler implements io.micronaut.rabbitmq.exception.RabbitListenerExceptionHandler {
    private static final Logger LOG = LoggerFactory.getLogger(RabbitListenerExceptionHandler.class);
    @Override
    public void handle(RabbitListenerException exception) {
        if (LOG.isErrorEnabled()) {
            Optional<RabbitConsumerState> messageState = exception.getMessageState();
            if (messageState.isPresent()) {
                LOG.error("Error processing a message for RabbitMQ consumer [" + exception.getListener() + "]", exception);
            } else {
                LOG.error("RabbitMQ consumer [" + exception.getListener() + "] produced an error", exception);
            }
        }
    }
}

运行时异常

Caused by: io.micronaut.context.exceptions.NonUniqueBeanException: Multiple possible bean candidates found: [io.micronaut.rabbitmq.exception.DefaultRabbitListenerExceptionHandler, fete.bird.common.extension.RabbitListenerExceptionHandler]

如何重写rabbitlistenerexceptionhandler??

tzcvj98z

tzcvj98z1#

必须将默认实现替换为 @Replaces(DefaultRabbitListenerExceptionHandler.class)

相关问题