尝试在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??
1条答案
按热度按时间tzcvj98z1#
必须将默认实现替换为
@Replaces(DefaultRabbitListenerExceptionHandler.class)