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