Spring Cloud Contract 和 plain Spring AMQP

Spring Cloud Contract and plain Spring AMQP

我们在 spring 引导项目中使用纯 Spring AMQP

我们希望确保我们的消息消费者可以针对真实消息进行测试,并避免针对静态测试消息进行测试。

因此,我们的生产者可以在测试阶段生成消息片段,消费者测试可以获取这些片段,以确保它针对最新的消息版本进行测试,并查看生产者的变化是否会破坏消费者。

似乎 Spring Cloud Contract 正是这样做的。那么有没有办法将 spring 云合约与 spring amqp 集成?任何前进方向的提示都将不胜感激。

实际上我们不支持开箱即用,但您可以自行设置。在自动生成的测试中,我们使用一个接口来接收和发送消息 您可以使用 spring-amqp 实现您自己的 class。消费者端(存根运行器)也是如此。您需要做的是实施和注册一个 bean org.springframework.cloud.contract.verifier.messaging.MessageVerifier 生产者和消费者的类型。这应该有效,因为我们在自动生成的测试中所做的是 @Inject MessageVerifier 因此,如果您注册自己的 bean,它将起作用。

更新: 正如@Mathias 所提到的,AMQP 支持已经存在于 Spring Cloud Contract https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html#_stub_runner_spring_amqp