如何在 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 和相应的组件测试和集成测试。
我的应用程序使用 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 和相应的组件测试和集成测试。