Spring Cloud Contract - 混合 http 和消息传递

Spring Cloud Contract - Mixing http and messaging

我想开始使用 SCC,但我找不到如何实施我们现有的一个特定案例。服务以 Kafka 消息的形式接收输入,需要使用基于该输入消息的有效负载调用外部 rest api。它也反过来,当我们收到 rest call 时,结果应该是 Kafka 消息。 SCC 对此有任何支持吗?

当然可以。您的应用程序是消息的消费者和生产者。它还具有一个控制器并使用来自另一个服务的 http 控制器。您要创建以下合同。

合同 1 - 在 kafka 消息的生产者上验证它是否可以向代理发送消息(我们称之为服务 A)。服务 B 将重用该消息的存根来检查它是否可以使用来自 kafka 的消息。

合同 2 - 在收到消息时调用的 http 端点的生产者(服务 C)。

合同 3 - 在将被称为“反过来”(服务 B)的 http 端点的生产者上

合同 4 - 向 kafka 发送消息的生产者“反过来”。

要记住的重要一点是,您要单独测试那些。这意味着如果你从 kafka 收到一条消息,然后你想对它们进行 http 调用,你就模拟了消息侦听器调用的所有内容。基于 http 的通信也是如此。如果您的控制器使用应用程序服务,您将模拟它。