kafka涉及微服务架构时如何实现合约测试?

Posted

技术标签:

【中文标题】kafka涉及微服务架构时如何实现合约测试?【英文标题】:How to implement contract testing when kafka is involved in microservice architecture? 【发布时间】:2017-12-06 15:33:39 【问题描述】:

我目前正在从事一个项目,我们在微服务架构中实现了 kafka。您是否成功地使用 pact-jvm 为 mS 到 kafka 主题交互创建了合同测试用例?

我的实现是微服务 1 将消息发布到 REST 客户端,然后再将消息发布到 Kafka 主题。 microservice2 使用 GET 方法从 Kafka Topic 中检索消息。

【问题讨论】:

【参考方案1】:

Pact-JVM 支持 Message Pacts,它封装了通过某种机制(通常是消息队列)消费(一种方式)的消息。这个想法是测试消费者代码是否可以通过消费者测试来消费消息,然后验证提供者是否生成了适当的消息。测试中没有使用实际的消息队列。

这最初是为通过 Kafka 消息队列进行通信的微服务应用合约测试而开发的。

测试分两部分完成,就像请求-响应契约测试一样,除了消费者在消费者契约测试期间读取消息,如果成功则写入契约文件。然后调用提供程序代码生成一条消息,并将其与 pact 文件中的内容进行比较。

Pact-JVM 文档的相关部分是:

Gradle Plugin Maven Plugin JUnit Example

【讨论】:

谢谢@ronald-holshausen 您能否也指出生成合同的消费者JVM部分? 当然,这里有一个 JUnit 测试的链接:github.com/DiUS/pact-jvm/blob/master/pact-jvm-consumer-junit/…

以上是关于kafka涉及微服务架构时如何实现合约测试?的主要内容,如果未能解决你的问题,请参考以下文章

微服务架构终极探讨:Kafka校验数据的方法

DevOps架构下如何进行微服务性能测试

Spring Cloud构建微服务架构消息总线(续:Kafka)

什么是微服务架构?主流的微服务如何实现?

怎么搭建微服务架构?

SpringBoot+Nacos+Kafka 简单实现微服务流编排