在SpringBootKafka中调用了verfiy/测试确认

iugsix8n  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(431)

我已经为我的SpringBootKafka(消费者/生产者)服务编写了集成测试,一切都很顺利。因此,我在一些处理之后手动提交消费者的偏移量。我想核实一下 acknowledgment.acknowledge() 被消费者叫来。是否可以验证?
这是我的服务方法签名:

@KafkaListener(topics = {TOPIC_XXX_V1}, containerFactory = "XXXListener")
    private void consumer(@Payload XXXXRequestEvent xxxxRequestEvent, Acknowledgment acknowledgment) {

.....
// do something with the database

acknowledgment.acknowledge()

对于我正在使用的测试端 @SpyBean 为服务和 MockBean 用于数据库交互。我想验证一下在测试用例中 .acknowledge() 被叫来了。仅供参考:the .acknowledge() 是一个公共抽象空方法

yvfmudvl

yvfmudvl1#

作为 Acknowledge 示例是作为springkafka的一部分被注入和创建的,在使用消息时,我想没有办法使用 verify() 为了这个。
在编写单元测试时,您可以通过 Acknowledge 然后验证是否调用了此方法。但是,使用单元测试,您无法测试消息的实际使用情况(序列化、正确的消息处理程序等)。
因此,在您的情况下,我将尝试验证您的消息是否得到了确认,例如使用testcontainers在kafka容器内执行命令,并确保不再返回已确认的消息。
另一种方法是创建一个kafka客户机作为测试的一部分,然后尝试在x秒内使用来自同一主题的消息,结果为零。等待也许对你有帮助。

相关问题