主题之间的 Kafka 依赖关系
Kafka dependency between topics
我创建了一个订阅两个主题 TopicA 和 TopicB 的消费者。
当消费者收到TopicA的消息时,我的业务逻辑是存一个ObjectA到MySQL。
当消费者收到来自TopicB的消息时,我的业务逻辑是更新ObjectA。
但现在的问题是:
TopicA 和 TopicB 相互独立。
消费者可能先收到来自 TopicB 的消息,然后收到来自 TopicA 的消息。
当尝试更新 ObjectA 时,我发现它在 mysql 中不存在,然后将抛出 NullPointerException。
有什么方法可以配置 TopicA 和 TopicB 以确保先从 TopicA 接收消息,然后再从 TopicB 接收消息。
换句话说,如何在主题之间建立依赖关系?
所有 Kafka 都会根据偏移量消费消息并生成消息。 Kafka Topics 唯一可以提供的是保证您能够按照写入 Kafka 的顺序使用消息。您可以控制从主题中消费的速度,但您可以访问的唯一信息是您所在的每个主题的偏移量。
话虽如此,您需要在 TopicA 和 TopicB 之间建立依赖关系的用例似乎无法仅使用 Kafka 来实现。
如果消息保证在TopicB之前写入TopicA。您可能想出了一个解决方案,其中两条消息都写入同一主题,并且第一次看到特定消息时将其存储在 MySQL 中,第二次更新它。
我创建了一个订阅两个主题 TopicA 和 TopicB 的消费者。 当消费者收到TopicA的消息时,我的业务逻辑是存一个ObjectA到MySQL。 当消费者收到来自TopicB的消息时,我的业务逻辑是更新ObjectA。
但现在的问题是: TopicA 和 TopicB 相互独立。 消费者可能先收到来自 TopicB 的消息,然后收到来自 TopicA 的消息。 当尝试更新 ObjectA 时,我发现它在 mysql 中不存在,然后将抛出 NullPointerException。
有什么方法可以配置 TopicA 和 TopicB 以确保先从 TopicA 接收消息,然后再从 TopicB 接收消息。
换句话说,如何在主题之间建立依赖关系?
所有 Kafka 都会根据偏移量消费消息并生成消息。 Kafka Topics 唯一可以提供的是保证您能够按照写入 Kafka 的顺序使用消息。您可以控制从主题中消费的速度,但您可以访问的唯一信息是您所在的每个主题的偏移量。
话虽如此,您需要在 TopicA 和 TopicB 之间建立依赖关系的用例似乎无法仅使用 Kafka 来实现。
如果消息保证在TopicB之前写入TopicA。您可能想出了一个解决方案,其中两条消息都写入同一主题,并且第一次看到特定消息时将其存储在 MySQL 中,第二次更新它。