java - Spring JDBC - Kafka Consumer 的可重试异常

标签 java spring spring-jdbc kafka-consumer-api spring-kafka

我正在使用 Spring Kafka 消费者读取 Kafka 主题之外的消息。我将这些持久保存在 Oracle DB 中。每当出现数据库连接错误时,我都想执行重试。我正在使用 Spring JDBC 连接到 Oracle DB。如果我需要仅重试 JDBC 连接问题,我需要添加哪些异常类列表。

private static Map<Class<? extends Throwable>, Boolean> retryableExceptions;

static{
    retryableExceptions = new HashMap<>();
    retryableExceptions.put(Exception.class, true);
}
protected RetryPolicy retryPolicy() {
        SimpleRetryPolicy policy = new SimpleRetryPolicy(maxRetryAttempts, retryableExceptions);
        return policy;
}

最佳答案

我认为你只需要这个:

/**
 * Data access exception thrown when a resource fails completely:
 * for example, if we can't connect to a database using JDBC.
 *
 * @author Rod Johnson
 * @author Thomas Risberg
 */
@SuppressWarnings("serial")
public class DataAccessResourceFailureException extends NonTransientDataAccessResourceException {

只要您使用 JdbcTemplate 执行 JDBC 操作,连接的任何低级错误都会包装到此 DataAccessResourceFailureException 或其子类中。

关于java - Spring JDBC - Kafka Consumer 的可重试异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574188/

相关文章:

java - 用一种类型参数化的方法接受两种类型

java - @Component 和 @Named 都用于同一个 bean 类

java - JDBC 与 Spring 慢元数据获取 Oracle

java - 如何配置监听器来处理来自rabbitmq spring中同一队列的多个交换器的消息

java - 使用jsp :include to pass a array from one jsp page to another

mysql - Spring-Boot,无法使用spring-data JPA在MySql中保存unicode字符串

java - 如何使用SimpleJdbcInsert和MapSqlParameterSource批量插入?

java - 从匿名类内部访问变量

java - Firebase 退出 Google

java - 客户端访问 AS400 Java 包装器