当前位置: 首页 > 知识库问答 >
问题:

使用Schema Registry对avro消息进行Spring云契约测试

公羊浩气
2023-03-14

我正在查看spring docs和spring github,我可以看到一些通过json消息和kafka主题进行通信的异步kafka消息传递(生产者和消费者)的非常基本的示例,但似乎没有更多的示例用于更像生产的设置,其中消息不是json而是avro消息,而Schema Registry(例如Confluent)也在图片中。我对此感到非常惊讶,因为当基于事件的微服务通过生成/使用avro消息进行通信时,必须进行契约测试,以避免avro模式发展时出现运行时异常,并在构建期间捕获它们。我想知道是否有其他人已经解决了这个问题。任何方向都非常感谢!

共有1个答案

颛孙嘉石
2023-03-14

没有对Spring Cloud合约和avro的明确支持。但是,我们确实支持使用现有的中间件。这里有一个针对真正的kafka代理进行测试的示例-生产者:https://github.com/spring-cloud-samples/spring-cloud-contract-samples/tree/main/producer_kafka_middleware和消费者:https://github.com/spring-cloud-samples/spring-cloud-contract-samples/tree/main/consumer_kafka_middleware

如有必要,您可以运行其他中间件,包括模式注册表。

 类似资料:
  • > 简单说明一下我想实现的目标:我想对一个kafka流拓扑(使用拓扑测试驱动程序)进行功能测试,用于avro记录。 问题:无法“模拟”模式注册表尝试自动发布/读取模式 到目前为止,我尝试使用MockSchemaRegistryClient来模拟schemaRegistry,但我不知道如何将其链接到Avro Serde。 代码 阿夫罗斯德法 如果我运行测试没有它工作得很好(看起来一切都解决了) 但是

  • 我已经在一个Spring Boot项目中创建了一个Spring云契约存根()。希望调用此存根的客户机不是Spring项目,也不可能是Spring项目。如果我在客户端中运行以下命令: 然后我得到一个错误 显然,我没有,因为这不是一个Spring Boot项目。 这里有什么变通办法?

  • 使用方法创建新资源时,将新资源的位置添加到响应中,作为标头。 如何创建一个spring云契约YML来验证响应是否包含头,并将有效的作为其值? 我试过下面的YAML,但它不工作。 生成测试代码 生成的代码不包含任何头验证。

  • 我是Spring整合的新手。 我们有一个REST应用程序,它接收的消息太多(每分钟6000条消息),超出了数据库的处理能力。所以我想将请求的速率限制为每15秒500条消息(每分钟2000条)。我使用队列通道来实现这一点。 一段时间后,应用程序将创建30000个Java线程。此外,队列通道容纳的消息比队列容量中提到的要多。 如何减少线程数量并限制队列中的消息? 集成上下文xml: PrintGate

  • 问题内容: 我正在尝试使用Avro来读取和写入Kafka的邮件。有没有人有使用Avro二进制编码器对将放入消息队列中的数据进行编码/解码的示例? 我需要的是Avro而不是Kafka。或者,也许我应该考虑其他解决方案?基本上,我试图在空间方面找到一种更有效的JSON解决方案。刚刚提到了Avro,因为它可以比JSON紧凑。 问题答案: 我终于想起要询问Kafka邮件列表,并得到以下答复,效果很好。 是

  • 我正在尝试(单元)测试使用Kafka DSL的Spring Cloud Stream Kafka处理器,但收到以下错误“无法建立到节点1的连接。代理可能不可用。”。此外,测试不会停止。我尝试了EmbeddedKafka和TestBinder,但我有同样的行为。我试图从Spring Cloud团队(有效)给出的响应开始,我将应用程序改编为使用Kafka DSL,并将测试类保持原样。EmbeddedK