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