Хотя Pact поддерживает тестирование сообщений, я считаю, что рекомендуемый поток в Pact Nirvana не совсем соответствует потоку, который, как я понимаю, требуется управляемому событиям приложению.
Допустим, у нас есть служба управления заказами и служба управления доставкой. Служба Доставка выдает ShippingPreparedEvent
, которые получает служба Заказ.
Если мы удалим поле внутри ShippingPreparedEvent
, я ожидаю, что сначала внесу изменения в службу заказов, чтобы она перестала читать старое поле. Разверните его. Затем внесите изменения в службу Доставка и разверните ее. Таким образом, не будет простоев в работе сервисов.
Однако я считаю, что Pact ожидает, что сначала будет развернута служба Shipping (она является поставщиком события), чтобы контракт можно было проверить перед развертыванием потребителя. В этом случае развертывание сначала провайдера сломает моего потребителя.
Можно ли как-то избежать этой ситуации? Я что-нибудь упускаю?
Чтобы предоставить больше контекста, по этой ссылке мы видим, что разные изменения потребуют разного порядка развертывания. https://docs.confluent.io/current/schema-registry/avro.html#summary Я не буду использовать ни Kafka, ни Avro, но считаю, что мой алгоритм будет аналогичным.
Большое спасибо.