Hi all. We use Akka Cluster (2.5.22) to build the discovery service for a wider distributed system. One of the requirements for that system is that it be able to perform rolling upgrades.
Are there any guides, general patterns, or open source examples of how people do rolling protocol changes with Akka remoting/cluster? Where possible this would include more complex examples than simply adding a field to a message: e.g. actual protocol changes where new versions of actors might send or expect a slightly different set of messages all together.
Our current thinking is to basically have versions of actors namespaced by package, (
v2.FooActor), have actors handshake on a version and then use that to decide which Actors to forward to/respond from. We’d then deal with any semantic differences in the actual data produced at the boundary between our Actor system and the rest of the application.