如何在 Quarkus 测试中禁用 Kafka?

How to disable Kafka in Quarkus test?

我的应用程序使用 Kafka 和 Hibernate。对于 Kafka,需要 运行ning docker 图像。如果我 运行 一个针对 Hibernate 的 Quarkus 测试,如果 Kafka 不是 运行ning,则测试失败。在我的 IDE 中这不是问题,但在 Jenkins 中没有可用的 Kafka 服务器并且测试失败,因为它无法解析 Kafka 服务器。

是否可以在 Quarkus 测试中禁用 Kafka?

您可以使用 Microprofile 的 Emitter 将消息发送到 Kafka 通道:

@Inject 
@Channel("hello")
Emitter<String> emitter;

默认情况下,如果该发射器后面没有 Kafka,它将创建一个内存中消息总线。因此不需要 Kafka 的 docker 图像。

另一种解决方案是使用 TestContainers 中的 KafkaContainer 为每个测试创建一次性 Kafka 容器 运行。

您可以在 Alex Soto 的 repository.
中查看这两个示例 看看CheckoutProcess class 和相应的组件测试和集成测试。