虽然 Pact 支持消息测试,但我发现“Pact Nirvana”中推荐的流程与我理解的事件驱动应用程序需要的流程不太匹配。
假设我们有一个Order management service和一个Shipping management service。Shipping服务发出ShippingPreparedEvent
由Order服务接收的s 。
如果我们删除了 中的一个字段ShippingPreparedEvent
,我希望首先对 Order 服务进行更改,以便它停止读取旧字段。部署它。然后在Shipping服务中进行更改并部署它。这样,服务不会有任何停机时间。
但是,我相信 Pact 会期望首先部署Shipping服务(它是事件的提供者),以便在部署消费者之前可以验证合同。在这种情况下,首先部署提供者会破坏我的消费者。
这种情况能以某种方式避免吗?我错过了什么吗?
只是为了提供更多上下文,我们可以在此链接中看到不同的更改将需要不同的部署顺序。https://docs.confluent.io/current/schema-registry/avro.html#summary 我不会使用 Kafka 或 Avro,但我相信我的流程会类似。
非常感谢。