处理消费者异常 Rabbit MQ Micronaut 2.2.1
Handling Consumer Exceptions Rabbit MQ Micronaut 2.2.1
尝试在 Micronaut 2.2.1 中实现处理消费者异常https://micronaut-projects.github.io/micronaut-rabbitmq/latest/guide/#consumerExceptions
根据文档
如果消费者 bean 实现 RabbitListenerExceptionHandler,则异常将发送到方法实现。
如果消费者 bean 没有实现 RabbitListenerExceptionHandler,那么异常将被路由到主要的异常处理程序 bean。要覆盖默认异常处理程序,请将 DefaultRabbitListenerExceptionHandler 替换为您自己指定为 @Primary 的实现。
@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 ??
您必须将默认实现替换为 @Replaces(DefaultRabbitListenerExceptionHandler.class)
尝试在 Micronaut 2.2.1 中实现处理消费者异常https://micronaut-projects.github.io/micronaut-rabbitmq/latest/guide/#consumerExceptions
根据文档
如果消费者 bean 实现 RabbitListenerExceptionHandler,则异常将发送到方法实现。
如果消费者 bean 没有实现 RabbitListenerExceptionHandler,那么异常将被路由到主要的异常处理程序 bean。要覆盖默认异常处理程序,请将 DefaultRabbitListenerExceptionHandler 替换为您自己指定为 @Primary 的实现。
@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 ??
您必须将默认实现替换为 @Replaces(DefaultRabbitListenerExceptionHandler.class)