从数据库中获取大数据集并将其发送到 Kafka

Fetch large data set from Database and Send it to Kafka

我有 2 tables 让我们说 Emp 和课程 table。 Emp 有 30k 行,Courses 有 100k 行。

1 名员工可以有很多课程。即一对多 relation.I 需要从 table 获取记录并发送到 Kafka。

Data From Table-----> Convert To JSON --->Send To KAFKA

我不想一次加载内存中的所有行,因为它会导致内存不足异常错误。

如何实现?我可能会使用 JDBCTEMPLATE 或 SPRING DATA JPA?

我正在使用 SPRING BOOT 2+ 版本和 JAVA 8

仅供参考 例如。在 EMP table 中,我有 emp_id =1,它在课程 table 中有 5 个对应的行。 所以我会将这 5 行转换为 1 个 Java 对象,然后是 1 个 Json 对象。

Spring Data 提供了一种以非阻塞方式连续加载大量数据的特性。这使您可以在仍在获取某些数据的同时对结果进行所有想要的处理。为此,您只需要 return 您的 @Entity class 的 Stream :

public interface EmployeeRepository extends JpaRepository<EmployeeEntity, String> {
    Stream<EmployeeEntity> findAllBy();
}

将数据从数据库导入到 Apache Kafka 是一个非常常见的用例。 Kafka Connect allows you to stream data from and to Kafka in a reliable, scalable and fault tolerant way. Specifically, the JDBC source connector 做你想做的事,如果你构建你的自定义解决方案,你可能最终会部分实现连接器已经在做的事情。