We are happy to announce the availability of Lagom 1.6.0. This is the GA release of Lagom 1.6.0 and is production ready. We invite all our users to upgrade.
Here’s a list of the most relevant improvements.
Lagom 1.6 is based on the new Akka 2.6 release and has integrated support for Akka Typed.
As presented in the announcement for Akka 2.6, the new Akka Actor APIs (known as Akka Typed) represent a major shift in the Akka ecosystem towards type-safety and more explicit guidance with Actors. We’re happy to bring this to all Lagom users as well.
Lagom includes dependency injection support for typed Actors in Akka 2.6 through Play.
While the Lagom Persistence API is still supported and maintained, the new Akka Persistence API (Scala/Java) in Akka 2.6 is now the recommended default for persistence. This provides a more flexible API that gives you more control over some lower-level details while retaining some of the guided approaches that Lagom introduced. Akka Persistence can coexist with existing persistent entities, and the same read-side processor and topic producer APIs fully support both types of entities.
For Java API, Lagom now uses the Akka Jackson serializer, which is an improved version of the serializer in Lagom 1.5. You can find more information about the Akka Jackson serializer in the Akka documentation.
For Scala API, in addition to
play-json support, Akka Jackson serializer is now also supported. Akka Jackson serialization is especially useful when using Akka Persistence Typed API as it allows serialization of
ActorRef[T] typically used when encoding command replies.
Lagom 1.6 has a new API to programmatically stop and resume projections (Scala/Java) (Read Side Processors and Topic Producers) allowing users to control when a projection should start, stop or resume.
Support for Scala 2.13 and Java 11
Lagom 1.6 supports the latest Scala version (2.13), LTS Java version (11), and sbt 1.3, as well as the earlier Scala 2.12 and Java 8 versions.
Scala 2.13 brings in a few performance improvements for its collection and async (Future) APIs. Although Java users are not exposed directly to Scala APIs, the Lagom itself is built in Scala and uses many Scala dependencies. That said, updating to Scala v2.13 is also beneficial for Java API users.
- Kafka client defaults to only 1 max inflight request per connection. This can mean a drop in throughput but also increases guarantees against duplication or reordering of messages.
- persistence sharding uses
ddatastrategy instead of persistence
- JSON compression only triggers for payloads bigger than 32kb
- java.time.* serializes using ISO-8601instead of custom Jackson formats (only affects Java Lagom users)
This release introduces minimal changes over the
1.6.0-RC3. Therefore if you already moved to that version, the upgrade should be trivial. If you are still using Lagom
1.5.x, we recommend you first migrate to the latest version available of Lagom 1.5 series and then migrate to Lagom 1.6. If you are using a version older than
1.5.x, you should migrate one version at a time. For example: from
1.4.latest), then from
1.5.latest and finally to
1.6.x. Read the appropriate release notes and migration guides (Java / Scala) on each step.
Thanks to the community for their detailed bug reports and contributions.
Special thanks to the following contributors who helped with this release:
commits added removed author 249 25624 14553 Ignasi Marimon-Clos 202 13607 7824 Renato Cavalcanti 147 8846 3755 Marcos Pereira 93 1704 2856 Dale Wijnand 20 260 178 Tim Moore 13 534 508 Patrik Nordwall 6 200 155 Sergey Morgunov 4 16 10 Alden Torres 4 39 27 Enno Runne 3 10 9 Martynas Mickevičius 2 2 2 Abhiknoldur 2 755 385 James Roper 2 35 11 Ruth Stento 1 3 46 Sethi, Kunal 1 7 7 Juan Marin Otero 1 7 7 Matthias Kurz 1 2 2 Prashant Sharma 1 0 0 0xflotus 1 1 1 norfe 1 0 6 Fabian Grutsch 1 2 2 Fran Bermejo 1 1 1 Johannes Rudolph 1 24 1 Corey Auger 1 10 0 Zhonglai Zhang 1 72 60 Michael Liarakos 1 27 3 Dmitriy Grigoryev 1 23 1 Stephan Emmerich 1 2 2 Steve Swing