scala - 如何在不破坏现有设置的情况下更改 akka-scala 响应模型
问题描述
我有一个服务 A,多个微服务(内部)通过来自该服务 A 的客户端包使用该服务 A,其中包括 MyRequest、MyResponse 等模型。我们正在使用 akka-scala 演员,在客户端?
使用 akka ask 模式。这是当前的系统。
现在我想x
在case class MyResponse(a: Int, b: String, x: Option[String] = None)
. 但是当我部署它时,旧客户端的服务停止工作并且没有从服务 A 接收任何东西。我想以非破坏性的方式推动这个变化,因为它被多个服务使用,它不可能更新所有他们一下子。为此,我已经为x
.
需要帮助找出这里出了什么问题,以及使用 akka 系统发布此类更改的最佳方式是什么?
解决方案
只是为了我的理解:您有带有案例类 MyResponse(a: Int, b: String) 的服务器 A 和带有 MyResponse(a: Int, b: String, x: Option[String] = None) 的服务器 B?如果是这样,听起来好像不是同一条消息...服务器 B 向服务器 A 发送它无法处理的消息(如果是这样,它将到达死信 Q)
如果 B 发送到 A,这应该是部署步骤: 1. 部署服务器 A 支持它的新消息 2. 部署服务器 B 新消息并开始使用它 3. 从服务器 B 中删除消息 4. 从服务器 A 中删除消息
推荐阅读
- terraform - 多个保险库身份验证后端上的数据查找索引无效
- powerbi - 使用 PowerQuery 在几个月内按比例计算结果
- set - 在打印集时获得更少的元素
- java - 找不到匹配的构造函数:java.time.ZonedDateTime()
- excel - Excel中的嵌套vlookup?- 获取数组中的特定数字
- python - 如何在时间序列中使用 mean() 并将其放到列中?
- r - R中的子集代码之间存在不同的结果
- javascript - Javascript数组过滤和提取
- azure - 使用变量组和模板的 Azure Pipelines 变量的意外行为
- django - 什么是使您的网站更快的最佳方法,使其加载更快并在 django 中消耗更少的数据