如何使用 Spring Kafka 清除测试中的主题

Kar*_*cki 4 java apache-kafka spring-kafka

我正在使用 Spring Kafka 2.4 编写单元测试,以证明我的 Spring Boot 设置是正确的。我正在验证它SeekToCurrentBatchErrorHandler是否按预期工作,这需要发送应重试的错误消息。不幸的是,这个不正确的消息会破坏其他测试,因为该消息将永远重试。

由于上述原因,我想确保每个测试都被正确隔离。我要么需要:

  1. 删除并重新创建 Kafka 主题AdminClient

  2. 寻找现有 Kafka 主题的末尾并提交新的偏移量

我正在尝试使用方法 2 Consumer.seekToEnd(),但是 Spring Kafka 将创建的消费者隐藏在几层内部框架类后面。我也不能 100% 确定是否可以在与侦听器线程不同的测试线程中调用此方法。

在 Spring Kafka 测试中清除主题的推荐方法是什么?

Gar*_*ell 6

最佳实践是在每个测试中使用唯一的主题名称以提供完全隔离;您还可以停止容器,使用相同的容器创建一个新的消费者group.id并在那里执行搜索。