首页 > 解决方案 > 如何在不破坏现有设置的情况下更改 akka-scala 响应模型

问题描述

我有一个服务 A,多个微服务(内部)通过来自该服务 A 的客户端包使用该服务 A,其中包括 MyRequest、MyResponse 等模型。我们正在使用 akka-scala 演员,在客户端?使用 akka ask 模式。这是当前的系统。

现在我想xcase class MyResponse(a: Int, b: String, x: Option[String] = None). 但是当我部署它时,旧客户端的服务停止工作并且没有从服务 A 接收任何东西。我想以非破坏性的方式推动这个变化,因为它被多个服务使用,它不可能更新所有他们一下子。为此,我已经为x.

需要帮助找出这里出了什么问题,以及使用 akka 系统发布此类更改的最佳方式是什么?

标签: scalaakkamicroservices

解决方案


只是为了我的理解:您有带有案例类 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 中删除消息


推荐阅读