在处理完之前的两个事件后执行代码 (Apache Kafka)

Execute code when two previous events have been processed (Apache Kafka)

我是 Apache Kafka 和 Spring Boot 的新手。我正在尝试创建一个 Spring 引导侦听器,它仅在收到两条特定消息(通过 Apache Kafka 发送)(对于确定的资源)时才生成新事件。

显而易见的解决方案是在第一个事件到来时使用数据库更改资源的状态,并在第二个事件到来时执行代码(如果客户在数据库中的状态正确)。在这种情况下,我担心两个事件是否同时到达。

有没有办法在 Spring Boot/Apache Kafka 中聚合两条消息而不是手动执行此操作?

谢谢。

您可以使用 kafka 流 来完成。示例拓扑:

  1. 输入流(key/value来自输入主题A)

  2. 过滤器(例如按事件类型过滤)

  3. groupBy(按键或某些字段对事件进行分组)

  4. 聚合(将事件聚合到新的数据结构中)

  5. filter(验证聚合是否完整)

  6. map(生成具有聚合值的新输出事件)

  7. 输出流(key/value 主题 B)

    查看官方文档:https://kafka.apache.org/24/documentation/streams/developer-guide/dsl-api.html#creating-source-streams-from-kafka