我的工作是从远程数据库中获取数据,并将它们连接到kafka流(扩展)。我现在要做的是定期将远程数据库轮询到本地内存中。我认为当这个轮询操作发生时,Kafka流应该暂时停止。我现在的想法是这样的:
@Autowired
private KafkaStreams streams;
@Scheduled(cron = "0 0/15 * * * *") // this method is scheduled to run every 15 minutes
public synchronized void process() {
streams.close();
processPolling();
streams.start();
}
当方法开始运行时,流应该停止处理,然后轮询作业完成运行后,流应该重新开始处理。
这是个好习惯吗?有改进的建议吗?
1条答案
按热度按时间unhi4e5o1#
更好的方法是将远程数据库流式传输到kafka主题中,并在streams作业中本地使用这些主题。您可以使用jdbc连接器,也可以根据源数据库的不同使用不同的cdc选项。
启动和停止流使其成为一个批处理过程,流处理通过设计避免了相关的考虑因素和复杂性。