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

时间:2020-06-03 19:56:49

标签: spring spring-boot spring-kafka kafka-producer-api

我有2个表,可以说Emp和Courses表。 Emp有3万行,课程有10万行。

1名员工可以参加许多课程,即一对多关系。我需要从表中获取记录并发送给Kafka。

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

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

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

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

仅供参考 例如。在EMP表中,我的emp_id = 1,在Courses表中有5个对应的行。 因此,我会将这5行转换为1个Java对象,然后转换为1个Json对象。

2 个答案:

答案 0 :(得分:1)

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

controllerAs

答案 1 :(得分:1)

将数据从数据库导入Apache Kafka是一个非常常见的用例。 Kafka Connect允许您以可靠,可扩展和容错的方式在Kafka之间传输数据。具体来说,JDBC source connector完成了您要尝试做的事情,如果您构建自定义解决方案,则可能最终会部分实现连接器已在做什么。