如何在Quarkus测试中禁用Kafka?

3

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

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

1个回答

3
您可以使用 Microprofile 的Emitter来向 Kafka 频道发送消息:
@Inject 
@Channel("hello")
Emitter<String> emitter;

默认情况下,如果Emitter后面没有Kafka,则会创建一个内存中的消息总线。因此,不需要Kafka的Docker镜像。

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

您可以在Alex Soto的存储库中检查这两个示例。
请查看CheckoutProcess类及其相应的组件测试和集成测试。


1
我们已经使用了一个发射器,但问题是 Kafka 的服务器名称仅在 Docker 中已知。我们现在正在尝试 TestContainers,这似乎可以解决我们的问题。谢谢。 - Claus Radloff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接