用例:
一个线程接收一个businessid。
另一个完全独立的线程不断地将数据放入数据库,其中一列是businessid。
第一个线程应该从数据库中读取给定businessid的行并对其执行任务。
如何让第一个线程知道给定的businessid已进入数据库?
我知道我可以定期获取数据库,但是有没有更干净、性能更友好的方法来做到这一点? 就像以阻塞方式获取/查找一样。或者从数据库回调..等等?
定期从数据库轮询是最简单的方法。如果你想以反应式的方式做到这一点,只要插入相应的数据库记录,应用程序就会收到通知,那么 spring-data 就没有什么帮助了。
执行此操作的现代技术是使用更改数据捕获 (CDC)。一个著名的CDC Java开源工具是Debezium,它的高层架构是:
基本上,它对数据库日志文件中的更改做出反应,并将这些更改发布到 Kafka 主题。然后,您的应用程序可以使用 Kafka 主题中的更改。