【发布时间】:2022-01-20 06:15:34
【问题描述】:
我有几项服务,其中一项是事实来源 (SOT)。 Kafka 是他们的消息代理。有时我需要生成一组将在其他服务中使用和应用的事件。所谓的固定事件迁移。
我的夹具文件示例:
EntityUpdated (topicA)
- id
- relation
RelationUpdated (topicB)
- id
- relation
并且类是应用事件后在数据库中具有投影的弹簧实体。
class Entity: Model {
id
val relation: Relation
}
class Relation: Model {
id
}
当前的消费者实现以任意方式读取主题,消费者可以在 topicA 之前从 topicB 读取数据,并且我遇到由于相关实体尚不存在而无法应用消息的情况。 (在 EntityUpdated 之前使用 RelationUpdated)。
我有几个想法来解决它:
-
暂停所有分区/主题并按指定顺序恢复。所以我可以避免案例
RelationUpdated consumed before EntityUpdated。然后在恢复所有主题的所有分区后,我可以继续以任意方式工作。我不喜欢切换,但它看起来很有效。 -
将无法应用的消息放入所谓的死信队列,并尝试一次又一次地重播,直到它们都被应用。
也许有人会做类似的事情。我很高兴知道您的想法。
【问题讨论】:
标签: apache-kafka spring-kafka fixtures