繁体   English   中英

如何有条件地轮询来自 Kafka 主题的消息

[英]How to conditionally poll messages from Kafka Topic

我在 MongoDB 数据库中有一些任务通知。 每个任务都有一个 due_date 和提醒标志。 我正在将这些任务推送到 Kafka 主题。 有一个 Node JS 应用程序从该主题进行轮询,并根据 due_date 和提醒标志将通知推送到前端应用程序。 due_date 可能已过期或即将到来。

我们需要从 Kafka 向 Node App 发送通知,只要这些基于时间的条件发生,它就会监听:

  1. Reminder = true 并且在截止日期前 X 时间
  2. 截止日期 = 现在
  3. 任务仍然存在并且已过期

卡夫卡如何做到这一点?

数据库到 Kafka 的交互应该通过源连接器进行。 只要基础表发生变化,数据库连接器就可以将事件发布到 Kafka。 因此,如果创建新行或更新任何列。

因此,理想的解决方案是在表中引入更多的列或一个新的实用程序表,其中包含用于标识您上面提到的条件的列。 可能是像“IsDueDate”这样的列,它可以是 boolean 类型。 在数据库(不确定 Mongo,但大多数数据库都有此选项)或任何批处理系统(如 Spring 批处理/启动应用程序)中创建一个调度程序来验证您的数据并填充这些列。

一旦更新了这些列,它将通过连接器触发一条消息到 Kafka,并且您的前端应用程序轮询 Kafka 以获取新消息,最终可以在有效负载中使用这些标志来识别触发此事件的条件,您可以在前端执行这些操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM