Renato Cavalcanti |

Lagom 1.6 Released: Akka Persistence Typed, Projections Stop/Resume, Akka Jackson support and more

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.

This version builds on top of the 2.8.x series of Play and Akka 2.6. See GitHub for the full list of commits.

Here’s a list of the most relevant improvements.

Akka Typed and Akka Persistence Typed

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.

Jackson serialization

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.

It is compatible with Lagom 1.5 in both directions. See our migration guide (Scala/Java) for detailed information in case you are upgrading an existing Lagom application.

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.

Stop and Resume Projections

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.

Multiple changes in default behaviors

  • 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 ddata strategy 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)

Migrating from previous versions

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.9 to 1.4.15 (because 1.4.15 is 1.4.latest), then from 1.4.15 to 1.5.latest and finally to 1.6.x. Read the appropriate release notes and migration guides (Java / Scala) on each step.

Credits

Thanks to the community for their detailed bug reports and contributions.

Thanks to Lightbend for their continued sponsorship of the Lagom core team’s efforts. Lightbend offers commercial support for Lagom.

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

Share


Discuss