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

事件驱动应用程序的协议流

艾正浩
2023-03-14

假设我们有一个订单管理服务和一个运输管理服务。运输服务发出由订单服务接收的ShippingPrepareDevents。

如果我们删除了ShippingPrepareDevent中的字段,我希望首先对Order服务进行更改,使其停止读取旧字段。部署它。然后在传送服务中进行更改并部署它。这样,服务就不会停机。

但是,我相信Pact会希望首先部署航运服务(它是事件的提供者),以便在部署消费者之前可以验证合同。在这种情况下,首先部署提供者会破坏我的使用者。

为了提供更多的上下文,我们可以在这个链接中看到不同的更改需要不同的部署顺序。https://docs.confluent.io/current/schema-registry/Avro.html#Summary我不会使用Kafka或Avro,但我相信我的流程会类似。

多谢.

共有1个答案

经伟
2023-03-14

如果我们删除了ShippingPreparedEvent中的一个字段,我希望首先对Order服务进行更改,使其停止读取旧字段。部署它。然后在传送服务中进行更改并部署它。这样,服务就不会停机。

我同意。在《契约涅槃指南》中有什么特别的内容给你的印象是这不是一条可以走的路?Pact(和Pact代理)实际上并不关心部署的顺序。

在您的情况下,删除该字段将导致CAN-I-Deploy检查失败,因为删除该字段将破坏订单管理服务。唯一的方法是从消费者中删除字段用法,发布该契约的新版本并首先部署到生产中。

 类似资料:
  • 问题内容: 我得到以下称呼: Oracle系统在Solaris 5.10上运行10.2.0.3.0。jdbc驱动程序在JDK 1.6.0_21上运行(如果已导入,则Java也在Solaris 5.10机器上运行)。我尝试了几种不同的oracle瘦驱动程序,包括最新的和看起来与oracle版本完全匹配的驱动程序。 我正在运行的查询非常简单:“按key1,key2,key3从some_table中选择

  • 摘要 本文描述了如何在 RT-Thread 中,如何根据具体的硬件配置网络驱动,并灵活运用调试手段解决问题。 简介 在 RT-Thread 所支持的 BSP 中,大部分都有支持以太网驱动。但具体到用户的硬件中,可能会和默认的代码有所差异。本文选择相对以太网驱动比较完善的 stm32 BSP,介绍了驱动的主要实现方式,以及针对不同硬件的修改方法。 本文准备资料如下: RT-Thread 源码 Env

  • 是否有一种干净的方法来检测spring启动应用程序何时停止,并在停止之前执行一些操作?一种停止服务的CommandLineRunner 提前谢谢

  • 问题内容: 因此,我有一个用于MySQL JDBC驱动程序的.jar文件,该文件位于我的库源文件夹下,并且具有以下代码: 但是,它总是给我这个错误: 这是我添加jar文件的方法。我创建了一个lib文件夹,并将jar放入其中,然后在eclipse中配置构建路径,并将lib文件夹中的jar添加到了项目中。 问题答案: 您错过了类路径中的mysql-connector-j jar文件。使用“ java

  • 8.3 Tkinter 事件驱动编程 在 8.2 节中我们学习了图形用户界面中的各种构件的用法,至此我们已经能够为应用程 序搭建用户界面的外观部分,用户界面的另一个重要部分是各界面元素所对应的程序功能。 GUI 应用程序与普通应用程序的一个不同之处就在于,实现程序功能的代码与图形界面元素 相关联,这导致了一种新的程序执行模式——事件驱动。8.1.3 中简单介绍了事件驱动编程的 基本概念,现在我们来

  • 在前面的文章中我们简单介绍了事件驱动编程,现在让我们看看真实的代码并介绍EventBus的基础用法。 首先我会参考下图(从EventBus仓库截取的),介绍在事件驱动编程中扮演中心角色的实体们。 事件总线EventBus:连接所有其他实体的中央通信通道; 事件Event:发生的动作,几乎可以是任何事情(应用启动,收到某些数据,用户交互等等); 订阅者Subscriber:订阅者监听事件总线,当总线