【问题标题】:Spring Cloud Contract - Mixing http and messagingSpring Cloud Contract - 混合 http 和消息传递
【发布时间】:2021-03-04 04:37:02
【问题描述】:

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

【问题讨论】:

    标签: spring spring-boot spring-cloud spring-cloud-contract


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回答,它消除了一些混乱。但是,我仍然有一个问题,从文档或示例中我不清楚如何签订一个 API 请求导致 Kafka 消息的合同。你能给我一些见解吗?
    • 因此,在我提到的这种情况下,据了解,我将拥有 2 份合同。第一个用于 api 调用(请求响应),第二个用于 Kafka 输出消息,它将使用某种带有 triggerBy() 的模拟方法
    • 是的,这正是你会做的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 2017-02-15
    相关资源
    最近更新 更多