Java springboot中的错误管理&x2B;卡夫卡应用程序

Java springboot中的错误管理&x2B;卡夫卡应用程序,java,error-handling,apache-kafka,Java,Error Handling,Apache Kafka,我正在尝试在我的应用程序中创建一个错误管理系统 我从IBMAS400收到数据,我们开发了一个从AS400到卡夫卡的连接器 我的管道如下所示: 有两种可能,要么我们预期会出现错误并创建一个特定的结构,要么我们不预期它,因为我们以前不必面对它 我列出了以下可能的错误: 输入数据损坏,导致应用程序错误=>格式化异常 系统故障切换(数据库、服务等)=>未知异常 问题是,我以后如何管理错误?在没有任何人工/手动重播机制的情况下,我必须考虑哪些因素来管理错误 如果错误发生在格式化异常的情况下,并且发生

我正在尝试在我的应用程序中创建一个错误管理系统

我从IBMAS400收到数据,我们开发了一个从AS400到卡夫卡的连接器

我的管道如下所示:

有两种可能,要么我们预期会出现错误并创建一个特定的结构,要么我们不预期它,因为我们以前不必面对它

我列出了以下可能的错误:

  • 输入数据损坏,导致应用程序错误=>格式化异常
  • 系统故障切换(数据库、服务等)=>未知异常
问题是,我以后如何管理错误?在没有任何人工/手动重播机制的情况下,我必须考虑哪些因素来管理错误

如果错误发生在格式化异常的情况下,并且发生了,我如何继续处理


提前感谢您的帮助

通常,您会将数据发送到死信队列主题,然后需要在以后手动检查和重播(假设数据可以变得有效)。如果下游系统发生故障,您不应该使用和提交补偿。在Kafka中,除了消费者类型之外,还有许多异常类型。但是,如果下游系统出现故障,并且您读取和处理了一条消息,那么您将丢失和跳过消息。您是否查看过Kafka事务或幂等生产者?如果事务中的一条记录失败,那么它将回滚,并且不发送任何记录。否则,您将不得不重新发送整批记录。正如我提到的,无论块大小如何,这些消息中的任何一条都可能失败。根据您配置客户端的方式,在最坏的情况下,您必须处理重复记录或丢弃的记录。通常,您会将数据发送到死信队列主题,然后您需要在以后手动检查和重播(假设数据可以变得有效)。如果下游系统发生故障,您不应该使用和提交补偿。在Kafka中,除了消费者类型之外,还有许多异常类型。但是,如果下游系统出现故障,并且您读取和处理了一条消息,那么您将丢失和跳过消息。您是否查看过Kafka事务或幂等生产者?如果事务中的一条记录失败,那么它将回滚,并且不发送任何记录。否则,您将不得不重新发送整批记录。正如我提到的,无论块大小如何,这些消息中的任何一条都可能失败。根据客户机的配置方式,在最坏的情况下,您必须处理重复记录或丢弃的记录。