News, articles, code snippets and more by the hakkers in the Akka community. Links: Akka Home Akka DocsLet it crashTumblr (3.0; @hakkers)https://letitcrash.com/Team Blog moved to blog.akka.io<p>Dear hakkers,<br/>we decided to move the Akka Team blog to the <a href="https://blog.akka.io">blog.akka.io</a>.</p><p>The Let it Crash blog will remain as-is for archival purposes, as many of the posts (especially some from the Summer of Blog) are top quality and still very relevant nowadays.</p>https://letitcrash.com/post/146995608612https://letitcrash.com/post/146995608612Wed, 06 Jul 2016 16:22:31 +0200blogcommunityktosoplAkka 2.4.1 Released<p><em>Dear hAkkers,</em></p> <p>We—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.1.</p> <p>This release contains a few important fixes and improvements:</p> <ul> <li>Shard region now kills shards more consistently on HandOff</li> <li>An empty shard region now shuts down correctly on graceful shutdown</li> <li>Using the distributed data mode the sharding coordinator updates correctly after leader downing</li> <li>Possibility to provide a custom supervision strategy for the BackOffSupervisor</li> <li>Problem with split brain on cluster startup under some circumstances solved</li> <li>A new <code>Supervisor</code> that supports exponential restart back-off semantics for actors regardless of their lifecycle model (the BackoffSupervisor overloads the meaning of self-termination)</li> </ul> <p>The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.1">2.4.1 github issues milestone</a>.</p> <p>Akka 2.4.1 is released for Scala 2.11, 2.12.0-M3 and Java 8.</p> <h3>Migrating from Older Relases</h3> <p>When migrating an existing project from Akka 2.3.x please have a look at the <a href="https://doc.akka.io/docs/akka/2.4.1/project/migration-guide-2.3.x-2.4.x.html">migration guide</a>.</p> <h3>Additional Release Details</h3> <p>The artifacts comprising this release have been published to <a href="https://oss.sonatype.org/content/repositories/releases/">https://oss.sonatype.org/content/repositories/releases/</a> and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.11”.</p> <h4>Credits</h4> <pre><code>commits added removed 22 1636 411 Patrik Nordwall 8 542 57 Konrad Malawski 7 1418 151 Johan Andrén 7 246 815 Andrea 5 9 9 Markus Hauck 2 57 65 Martynas Mickevičius 2 580 5 Anton Karamanov 2 58 11 Roland Kuhn 2 6 6 kukido 2 2 2 Jaca777 2 34 7 Jan Ypma 1 35 4 Evgeny Shepelyuk 1 19 1 Nils-Helge Garli Hegvik 1 3 3 Stefan Wachter 1 30 7 Heiko Seeberger 1 903 16 Kailuo Wang 1 2 2 michaelom 1 342 9 Henry Mai 1 33 18 Krzysztof Bochenek 1 4 4 cheehau.lim 1 17 4 lolski 1 14 3 Marcin Sosnicki 1 7 0 Martin Grotzke 1 242 14 Endre Sándor Varga 1 127 21 Michal Lacko 1 74 3 Ievgenii.Shepeliuk 1 0 1 Oleg </code></pre> <p><em>Happy hAkking!</em></p>https://letitcrash.com/post/134060306852https://letitcrash.com/post/134060306852Fri, 27 Nov 2015 16:17:59 +0100akka-teamAkka Stream and Http 2.0-M1 Released!<p><a href="https://akka.io/news/2015/11/05/akka-streams-2.0-M1-released.html">https://akka.io/news/2015/11/05/akka-streams-2.0-M1-released.html</a><br/></p>https://letitcrash.com/post/132662344127https://letitcrash.com/post/132662344127Fri, 06 Nov 2015 14:21:40 +0100martmicAkka 2.4.0 Released<p><em>Dear hAkkers,</em></p> <p>we—the Akka committers—are proud to announce the final release of Akka 2.4.0.</p> <p>The key features of the 2.4.0 release are:</p> <ul> <li>dropped support for Java 6 &amp; 7 as announced in the <a href="https://www.typesafe.com/blog/akka-roadmap-update-dec-2014">last roadmap update</a>, and now require Java 8 or later</li> <li>dropped support for Scala 2.10, kept 2.11 and added 2.12 (which is at milestone 2 currently); this is in keeping with our policy to support the Scala version that is “current” when the first milestone comes out plus any later version that is published during this series’ lifetime</li> <li><a href="https://doc.akka.io/docs/akka/2.4.0/scala/persistence.html">Akka Persistence</a> was promoted to a fully supported module (not experimental)</li> <li>added experimental stream based API for the <a href="https://doc.akka.io/docs/akka/2.4.0/scala/persistence-query.html">Query Side</a> of Akka Persistence (implementations must be provided by query plugins corresponding to the journal plugins for the various data stores)</li> <li>improved support for Akka Persistence event migrations by <a href="https://doc.akka.io/docs/akka/2.4.0/scala/serialization.html#Serializer_with_String_Manifest">Serializer with String Manifest</a> and <a href="https://doc.akka.io/docs/akka/2.4.0/scala/persistence.html#Event_Adapters">Event Adapters</a> and prepared comprehensive documentation of strategies for <a href="https://doc.akka.io/docs/akka/2.4.0/scala/persistence-schema-evolution.html">schema evolution</a> of persistent events</li> <li>made Akka Persistence <a href="https://doc.akka.io/docs/akka/2.4.0/scala/persistence.html#Failures">failure handling</a> more robust and support rejections of events</li> <li>Akka Persistence can now use multiple different Journals within one ActorSystem (thanks to <a href="https://github.com/Andrei-Pozolotin">Andrei Pozolotin</a>, who also split out <a href="https://doc.akka.io/docs/akka/2.4.0/scala/cluster-metrics.html">ClusterMetrics</a> into their own module)</li> <li>introduced <a href="https://doc.akka.io/docs/akka/2.4.0/scala/persistence.html#Persistent_FSM">Persistent FSM</a>, thanks to an awesome contribution from <a href="https://github.com/leonidb">leonidb</a></li> <li>simplified setting up Akka Clusters <a href="https://doc.akka.io/docs/akka/2.4.0/additional/faq.html#Why_are_replies_not_received_from_a_remote_actor_">behind NAT</a> (including inside Docker containers)</li> <li>added the experimental <a href="https://doc.akka.io/docs/akka/2.4.0/scala/typed.html">Akka Typed</a> module previously codenamed Project Gålbma, a new way of formulating Actor interactions with full type-system support</li> <li>promoted the <a href="https://doc.akka.io/docs/akka/2.4.0/scala/cluster-singleton.html">ClusterSingleton</a>, <a href="https://doc.akka.io/docs/akka/2.4.0/scala/cluster-client.html">ClusterClient</a>, <a href="https://doc.akka.io/docs/akka/2.4.0/scala/distributed-pub-sub.html">DistributedPubSub</a> and <a href="https://doc.akka.io/docs/akka/2.4.0/scala/cluster-sharding.html">ClusterSharding</a> patterns to fully a supported Cluster Tools module, including various API and configuration improvements</li> <li>ClusterSharding also learnt a few new tricks (<a href="https://doc.akka.io/docs/akka/2.4.0/scala/cluster-sharding.html#Graceful_Shutdown">graceful shutdown</a>, asynchronous shard allocation, reviving entries after migration thanks to <a href="https://github.com/DomBlack">Dominic Black</a>, and more flexible use of roles [thanks to <a href="https://github.com/rmarsch">Richard Marscher</a>)</li> <li><a href="https://doc.akka.io/docs/akka/2.4.0/scala/cluster-client.html">ClusterClient</a> now uses custom failure detection to avoid quarantining in case of transient network failures</li> <li>added experimental <a href="https://doc.akka.io/docs/akka/2.4.0/scala/distributed-data.html">Akka Distributed Data</a> which was previously known as <a href="https://github.com/patriknw/akka-data-replication">Akka Data Replication</a> (see <a href="https://github.com/patriknw/akka-data-replication">akka-data-replication migration guide</a>), the Distributed Data module is useful for sharing eventually consistent data (CRDTs) between nodes in an Akka Cluster</li> <li>new experimental feature that makes it possible to promote new members to WeaklyUp during network partitions, thanks to <a href="https://github.com/hveiga">Hector Veiga</a> for contributing</li> <li>the SLF4J logging adapter can now apply the log filtering rules prior to sending to the EventStream, see the <a href="https://doc.akka.io/docs/akka/2.4.0/project/migration-guide-2.3.x-2.4.x.html#Slf4j_logging_filter">migration guide</a></li> <li>make it possible to use any version of Protobuf for serialization of application messages, the internal dependency to Protobuf has been replaced by embedding a shaded (renamed package) version, if you use Protobuf in your application you need to add the dependency to your build, see <a href="https://doc.akka.io/docs/akka/2.4.0/project/migration-guide-2.3.x-2.4.x.html#Protobuf_Dependency">migration guide</a></li> <li>but the biggest feature is probably that Akka 2.4 will be binary backwards compatible with Akka 2.3, see the detailed description below.</li> </ul> <h4>Things that will be included in upcoming 2.4.x releases</h4> <p>The Java API and the documentation for <a href="https://doc.akka.io/docs/akka/2.4.0/scala/typed.html">Akka Typed</a> will be added. The Scala API was released in 2.4.0 in order to gather early feedback on this rather exciting new module.</p> <p>We will incorporate Streams &amp; HTTP once ready (to become an experimental module, as usual) into 2.4.x. Note that you can use Akka Streams 1.0 together with Akka 2.4.0.</p> <h4>Binary Compatibility</h4> <p>Akka 2.4.x is backwards binary compatible with previous 2.3.x versions (exceptions listed below). This means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). It should be noted that Scala 2.11.x is is not binary compatible with Scala 2.10.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version—akka-actor_2.11-2.4.0.jar is compatible with akka-actor_2.11-2.3.14.jar but not with akka-actor_2.10-2.3.14.jar.</p> <p>Binary compatibility is <strong>not</strong> maintained for the following:</p> <ul> <li>akka-testkit and akka-multi-node-testkit</li> <li>experimental modules, such as akka-persistence and akka-contrib</li> <li>features, classes, methods that were deprecated in 2.3.0 or earlier and removed in 2.4.x</li> </ul> <p>Being binary compatible means that applications and libraries built on top of Akka 2.3.x continue to work with Akka 2.4.x without recompilation (subject to the conditions below), which implies that Akka Streams &amp; HTTP as well as Play Framework 2.4 can be combined with Akka 2.4.</p> <p>The dependency to Netty has been updated from version 3.8.0.Final to 3.10.3.Final. The changes in those versions might not be fully binary compatible, but we believe that it will not be a problem in practice. No changes were needed to the Akka source code for this update. Users of libraries that depend on 3.8.0.Final that break with 3.10.3.Final should be able to manually downgrade the dependency to 3.8.0.Final and Akka will still work with that version.</p> <p>The dependency to Typesafe Config has been updated from 1.2.1 to 1.3.0 which should be binary compatible for the vast majority users, except for obscure edge cases as its changelog points out. This change was made in order in order to use new JDK8 specific features in the library as well as to align Akka with Play which is now also depending on 1.3.0.</p> <h4>Migration Guide</h4> <p>When migrating a code base to 2.4 please refer to the <a href="https://doc.akka.io/docs/akka/2.4.0/project/migration-guide-2.3.x-2.4.x.html">migration guide</a> in order to profit from some of the improvements.</p> <p>Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4. We kindly ask the Akka Persistence plugin maintainers to migrate and release for 2.4.0. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the <a href="https://doc.akka.io/docs/akka/2.4.0/project/migration-guide-2.3.x-2.4.x.html#Persistence_Plugin_APIs">Persistence Plugin APIs</a> section in the migration guide.</p> <p>We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.14 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.</p> <h4>General Remarks</h4> <p>357 issues were closed since 2.3.0. The complete list can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4-M1">2.4-M1</a>, <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4-M2">2.4-M2</a>, <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4-M3">2.4-M3</a>, <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC1">2.4.0-RC1</a>, <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC2">2.4.0-RC2</a>, <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC3">2.4.0-RC3</a> and <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0">2.4.0</a> github issues milestones.</p> <p>Thanks to the Community! For this release we had the help of 134 committers. For the full stats see the <a href="https://akka.io/news/2015/09/30/akka-2.4.0-released.html">announcement on the website</a>.</p> <p>Happy hakking!</p>https://letitcrash.com/post/130208202362https://letitcrash.com/post/130208202362Wed, 30 Sep 2015 18:38:40 +0200patriknwAkka Monitoring from Typesafe and Takipi<p>Typesafe Reactive <a href="https://info.typesafe.com/TRL-20XX-Monitoring-Trial_LP.html"><b>Monitoring Beta Program</b></a> is announced today.</p><p>The first release is specifically geared towards monitoring of Akka, with as little performance overhead as possible. <a href="https://www.takipi.com/">Takipi</a> is the first third-party monitoring solution to be supported.</p><p>Try it out!</p>https://letitcrash.com/post/129839593967https://letitcrash.com/post/129839593967Fri, 25 Sep 2015 12:53:58 +0200patriknwAkka 2.4.0-RC3 Released<p><em>Dear hAkkers,</em></p> <p>we—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.0-RC3 (THIRD RELEASE CANDIDATE). This is what we intend to ship as 2.4.0 final unless issues are found, so please test it thoroughly and report back. Failures are important to hear about, but praise also does not hurt :-)</p> <p>Since the last release candidate two weeks ago we have mostly improved the documentation, but there are few other changes also:</p> <ul> <li>make Persistence Query API explorable (more IDE friendly), thanks to Brian Scully for the design suggestion</li> <li>make event adapter lookup more efficient, to fix this we had to break binary compatibility with the Persistence journal plugins released for 2.4.0-RC2 so we kindly ask the plugin maintainers to publish new versions</li> <li>Persistence schema evolution section of the documentation has been ported to Java</li> <li>fixed LevelDB journal issue when deleting all events</li> <li>Utility program that can remove the internal data stored by the Cluster Sharding coordinator</li> <li>fixed regression in Cluster Singleton configuration</li> </ul> <p>The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC3">2.4.0-RC3 github issues milestone</a>.</p> <p>The key features of the 2.4.0 release are:</p> <ul> <li>we dropped support for Java 6 &amp; 7 as announced in the <a href="https://www.typesafe.com/blog/akka-roadmap-update-dec-2014">last roadmap update</a>, and now require Java 8 or later</li> <li>we dropped support for Scala 2.10, kept 2.11 and added 2.12 (which is at milestone 2 currently); this is in keeping with our policy to support the Scala version that is “current” when the first milestone comes out plus any later version that is published during this series’ lifetime</li> <li><a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/persistence.html">Akka Persistence</a> was promoted to a fully supported module (not experimental)</li> <li>added experimental stream based API for the <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/persistence-query.html">Query Side</a> of Akka Persistence (implementations must be provided by query plugins corresponding to the journal plugins for the various data stores)</li> <li>improved support for Akka Persistence event migrations by <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/serialization.html#Serializer_with_String_Manifest">Serializer with String Manifest</a> and <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/persistence.html#Event_Adapters">Event Adapters</a> and prepared comprehensive documentation of strategies for <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/persistence-schema-evolution.html">schema evolution</a> of persistent events</li> <li>made Akka Persistence <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/persistence.html#Failures">failure handling</a> more robust and support rejections of events</li> <li>Akka Persistence can now use multiple different Journals within one ActorSystem (thanks to <a href="https://github.com/Andrei-Pozolotin">Andrei Pozolotin</a>, who also split out <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/cluster-metrics.html">ClusterMetrics</a> into their own module)</li> <li>introduced <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/persistence.html#Persistent_FSM">Persistent FSM</a>, thanks to an awesome contribution from <a href="https://github.com/leonidb">leonidb</a></li> <li>simplified setting up Akka Clusters <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/additional/faq.html#Why_are_replies_not_received_from_a_remote_actor_">behind NAT</a> (including inside Docker containers)</li> <li>we added the experimental <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/typed.html">Akka Typed</a> module previously codenamed Project Gålbma, a new way of formulating Actor interactions with full type-system support</li> <li>we promoted the <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/cluster-singleton.html">ClusterSingleton</a>, <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/cluster-client.html">ClusterClient</a>, <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/distributed-pub-sub.html">DistributedPubSub</a> and <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/cluster-sharding.html">ClusterSharding</a> patterns to fully a supported Cluster Tools module, including various API and configuration improvements</li> <li>ClusterSharding also learnt a few new tricks (<a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/cluster-sharding.html#Graceful_Shutdown">graceful shutdown</a>, asynchronous shard allocation, reviving entries after migration thanks to <a href="https://github.com/DomBlack">Dominic Black</a>, and more flexible use of roles [thanks to <a href="https://github.com/rmarsch">Richard Marscher</a>)</li> <li>use custom failure detection in <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/cluster-client.html">ClusterClient</a> to avoid quarantining in case of transient network failures</li> <li>added experimental <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/distributed-data.html">Akka Distributed Data</a> which was previously known as <a href="https://github.com/patriknw/akka-data-replication">Akka Data Replication</a> (see <a href="https://github.com/patriknw/akka-data-replication">akka-data-replication migration guide</a>), the Distributed Data module is useful for sharing eventually consistent data (CRDTs) between nodes in an Akka Cluster</li> <li>new experimental feature that makes it possible to promote new members to WeaklyUp during network partitions, thanks to <a href="https://github.com/hveiga">Hector Veiga</a> for contributing</li> <li>the SLF4J logging adapter can now apply the log filtering rules prior to sending to the EventStream, see the <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/project/migration-guide-2.3.x-2.4.x.html#Slf4j_logging_filter">migration guide</a></li> <li>make it possible to use any version of Protobuf for serialization of application messages, the internal dependency to Protobuf has been replaced by embedding a shaded (renamed package) version, if you use Protobuf in your application you need to add the dependency to your build, see <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/project/migration-guide-2.3.x-2.4.x.html#Protobuf_Dependency">migration guide</a></li> <li>but the biggest feature is probably that Akka 2.4 will be binary backwards compatible with Akka 2.3, see the detailed description below.</li> </ul> <h4>Things that are Known Missing</h4> <p>We will not be able to complete the Java API and the documentation for <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/scala/typed.html">Akka Typed</a> for 2.4.0, but the Scala API will be released in order to gather early feedback on this rather exciting new module.</p> <p>We will incorporate Streams &amp; HTTP once ready (to become an experimental module, as usual) into 2.4.x at a later time. Note that you can use Akka Streams 1.0 together with Akka 2.4.0-RC3.</p> <h4>Binary Compatibility</h4> <p>Akka 2.4.x is backwards binary compatible with previous 2.3.x versions (exceptions listed below). This means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). It should be noted that Scala 2.11.x is is not binary compatible with Scala 2.10.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version—akka-actor_2.11-2.4.0-RC3.jar is compatible with akka-actor_2.11-2.3.14.jar but not with akka-actor_2.10-2.3.14.jar.</p> <p>Binary compatibility is <strong>not</strong> maintained for the following:</p> <ul> <li>akka-testkit and akka-multi-node-testkit</li> <li>experimental modules, such as akka-persistence and akka-contrib</li> <li>features, classes, methods that were deprecated in 2.3.x and removed in 2.4.x</li> </ul> <p>Being binary compatible means that applications and libraries built on top of Akka 2.3.x continue to work with Akka 2.4.x without recompilation (subject to the conditions below), which implies that Akka Streams &amp; HTTP as well as Play Framework 2.4 can be combined with Akka 2.4.</p> <p>The dependency to Netty has been updated from version 3.8.0.Final to 3.10.3.Final. The changes in those versions might not be fully binary compatible, but we believe that it will not be a problem in practice. No changes were needed to the Akka source code for this update. Users of libraries that depend on 3.8.0.Final that break with 3.10.3.Final should be able to manually downgrade the dependency to 3.8.0.Final and Akka will still work with that version.</p> <p>The dependency to Typesafe Config has been updated from 1.2.1 to 1.3.0 which should be binary compatible for the vast majority users, except for obscure edge cases as its changelog points out. This change was made in order in order to use new JDK8 specific features in the library as well as to align Akka with Play which is now also depending on 1.3.0.</p> <h4>Migration Guide</h4> <p>When migrating a code base to 2.4 please refer to the <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/project/migration-guide-2.3.x-2.4.x.html">migration guide</a> in order to profit from some of the improvements.</p> <p>Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4-M2. This is a good time for Akka Persistence plugin maintainers to migrate and release a preview for 2.4.0-RC3. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the <a href="https://doc.akka.io/docs/akka/2.4.0-RC3/project/migration-guide-2.3.x-2.4.x.html#Persistence_Plugin_APIs">Persistence Plugin APIs</a> section in the migration guide.</p> <p>We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.14 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.</p> <h4>General Remarks</h4> <p>Please do what you usually do so well: try out this release candidate and report back when things break, not work as advertised, feel strange, or even when you are happy :-) Especially concerning binary compatibility we will need help from the community (you!) since we cannot run all possible programs ourselves; we base our BC efforts on the <a href="https://github.com/typesafehub/migration-manager">MiMa plugin</a> but that is no perfect guarantee that everything will work out of the box.</p> <p>The artifacts comprising this release have been published to <a href="https://oss.sonatype.org/content/repositories/releases/">https://oss.sonatype.org/content/repositories/releases/</a> and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.11” or “akka-actor_2.12.0-M2”, respectively.</p> <p>33 issues were closed since 2.4.0-RC2. The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC3">2.4.0-RC3 github issues milestone</a>.</p> <h4>Credits</h4> <pre><code>commits added removed 26 4460 1360 Patrik Nordwall 9 500 106 Johan Andrén 2 5 3 Konrad Malawski 2 3 2 Jamie 1 21 6 Marek Kadek 1 1 0 luben karavelov 1 39 9 Daryl Odnert </code></pre> <p><em>Happy hAkking!</em></p>https://letitcrash.com/post/129280309947https://letitcrash.com/post/129280309947Thu, 17 Sep 2015 15:22:45 +0200patriknwUnderstanding Akka's Recommended Practice for Actor Creation in Scala<p>Our friends at Cake Solutions wrote a nice article explaining <a href="https://www.cakesolutions.net/teamblogs/understanding-akkas-recommended-practice-for-actor-creation-in-scala">the <i>why</i> behind the recommended way to declare Actor Props</a>.</p>https://letitcrash.com/post/129137772492https://letitcrash.com/post/129137772492Tue, 15 Sep 2015 12:16:27 +0200akkapropsbasictutorialktosoplAkka 2.4.0-RC2 Released<p><em>Dear hAkkers,</em></p> <p>we—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.0-RC2 (SECOND RELEASE CANDIDATE). This is what we intend to ship as 2.4.0 final unless issues are found, so please test it thoroughly and report back. Failures are important to hear about, but praise also does not hurt :-)</p> <p>We would like to send a special thanks to Akka Persistence plugin maintainers for their feedback and reported issues. Thank you Brian Scully, Christopher Batey and Martin Krasser.</p> <p>Since the last release candidate two weeks ago the main changes are:</p> <ul> <li>make it possible to use any version of Protobuf for serialization of application messages, the internal dependency to Protobuf has been replaced by * embedding a shaded (renamed package) version, if you use Protobuf in your application you need to add the dependency to your build, see <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/project/migration-guide-2.3.x-2.4.x.html#Protobuf_Dependency">migration guide</a></li> <li>new experimental feature that makes it possible to promote new members to WeaklyUp during network partitions, thanks to <a href="https://github.com/hveiga">Hector Veiga</a> for contributing</li> <li>fixed a few bugs in Persistence and move Tagged to akka.persistence.journal</li> <li>some improvements of Cluster Sharding</li> <li>improve thread usage when starting Cluster extension</li> </ul> <p>The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC2">2.4.0-RC2 github issues milestone</a>.</p> <p>The key features of the 2.4.0 release are:</p> <ul> <li>we dropped support for Java 6 &amp; 7 as announced in the <a href="https://www.typesafe.com/blog/akka-roadmap-update-dec-2014">last roadmap update</a>, and now require Java 8 or later</li> <li>we dropped support for Scala 2.10, kept 2.11 and added 2.12 (which is at milestone 2 currently); this is in keeping with our policy to support the Scala version that is “current” when the first milestone comes out plus any later version that is published during this series’ lifetime</li> <li><a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/persistence.html">Akka Persistence</a> was promoted to a fully supported module (not experimental)</li> <li>added experimental stream based API for the <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/persistence-query.html">Query Side</a> of Akka Persistence (implementations must be provided by query plugins corresponding to the journal plugins for the various data stores)</li> <li>improved support for Akka Persistence event migrations by <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/serialization.html#Serializer_with_String_Manifest">Serializer with String Manifest</a> and <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/persistence.html#Event_Adapters">Event Adapters</a> and prepared comprehensive documentation of strategies for <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/persistence-schema-evolution.html">schema evolution</a> of persistent events</li> <li>made Akka Persistence <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/persistence.html#Failures">failure handling</a> more robust and support rejections of events</li> <li>Akka Persistence can now use multiple different Journals within one ActorSystem (thanks to <a href="https://github.com/Andrei-Pozolotin">Andrei Pozolotin</a>, who also split out <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/cluster-metrics.html">ClusterMetrics</a> into their own module)</li> <li>introduced <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/persistence.html#Persistent_FSM">Persistent FSM</a>, thanks to an awesome contribution from <a href="https://github.com/leonidb">leonidb</a></li> <li>simplified setting up Akka Clusters <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/additional/faq.html#Why_are_replies_not_received_from_a_remote_actor_">behind NAT</a> (including inside Docker containers)</li> <li>we added the experimental <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/typed.html">Akka Typed</a> module previously codenamed Project Gålbma, a new way of formulating Actor interactions with full type-system support</li> <li>we promoted the <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/cluster-singleton.html">ClusterSingleton</a>, <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/cluster-client.html">ClusterClient</a>, <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/distributed-pub-sub.html">DistributedPubSub</a> and <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/cluster-sharding.html">ClusterSharding</a> patterns to fully a supported Cluster Tools module, including various API and configuration improvements</li> <li>ClusterSharding also learnt a few new tricks (<a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/cluster-sharding.html#Graceful_Shutdown">graceful shutdown</a>, asynchronous shard allocation, reviving entries after migration thanks to <a href="https://github.com/DomBlack">Dominic Black</a>, and more flexible use of roles [thanks to <a href="https://github.com/rmarsch">Richard Marscher</a>)</li> <li>use custom failure detection in <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/cluster-client.html">ClusterClient</a> to avoid quarantining in case of transient network failures</li> <li>added experimental <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/distributed-data.html">Akka Distributed Data</a> which was previously known as <a href="https://github.com/patriknw/akka-data-replication">Akka Data Replication</a> (see <a href="https://github.com/patriknw/akka-data-replication">akka-data-replication migration guide</a>), the Distributed Data module is useful for sharing eventually consistent data (CRDTs) between nodes in an Akka Cluster</li> <li>the SLF4J logging adapter can now apply the log filtering rules prior to sending to the EventStream, see the <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/project/migration-guide-2.3.x-2.4.x.html#Slf4j_logging_filter">migration guide</a> but the biggest feature is probably that Akka 2.4 will be binary backwards compatible with Akka 2.3, see the detailed description below.</li> </ul> <h4>Things that are Known Missing</h4> <p>The Persistence <a href="https://doc.akka.io/docs/akka/2.4.0.RC1/scala/persistence-schema-evolution.html">schema evolution</a> section of the documentation has not yet been ported to Java, but the text and illustrations of the Scala version apply to both languages. We will complete this before 2.4.0 final.</p> <p>We will most likely not be able to complete the Java API and the documentation for <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/scala/typed.html">Akka Typed</a> for 2.4.0, but the Scala API will be released in order to gather early feedback on this rather exciting new module.</p> <p>We will incorporate Streams &amp; HTTP once ready (to become an experimental module, as usual) into 2.4.x at a later time. Note that you can use Akka Streams 1.0 together with Akka 2.4.0-RC2.</p> <h4>Binary Compatibility</h4> <p>Akka 2.4.x is backwards binary compatible with previous 2.3.x versions (exceptions listed below). This means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). It should be noted that Scala 2.11.x is is not binary compatible with Scala 2.10.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version—akka-actor_2.11-2.4.0-RC2.jar is compatible with akka-actor_2.11-2.3.12.jar but not with akka-actor_2.10-2.3.12.jar.</p> <p>Binary compatibility is <strong>not</strong> maintained for the following:</p> <ul> <li>akka-testkit and akka-multi-node-testkit</li> <li>experimental modules, such as akka-persistence and akka-contrib</li> <li>features, classes, methods that were deprecated in 2.3.x and removed in 2.4.x</li> </ul> <p>Being binary compatible means that applications and libraries built on top of Akka 2.3.x continue to work with Akka 2.4.x without recompilation (subject to the conditions below), which implies that Akka Streams &amp; HTTP as well as Play Framework 2.4 can be combined with Akka 2.4.</p> <p>The dependency to Netty has been updated from version 3.8.0.Final to 3.10.3.Final. The changes in those versions might not be fully binary compatible, but we believe that it will not be a problem in practice. No changes were needed to the Akka source code for this update. Users of libraries that depend on 3.8.0.Final that break with 3.10.3.Final should be able to manually downgrade the dependency to 3.8.0.Final and Akka will still work with that version.</p> <p>The dependency to Typesafe Config has been updated from 1.2.1 to 1.3.0 which should be binary compatible for the vast majority users, except for obscure edge cases as its changelog points out. This change was made in order in order to use new JDK8 specific features in the library as well as to align Akka with Play which is now also depending on 1.3.0.</p> <h4>Migration Guide</h4> <p>When migrating a code base to 2.4 please refer to the <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/project/migration-guide-2.3.x-2.4.x.html">migration guide</a> in order to profit from some of the improvements.</p> <p>Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4-M2. This is a good time for Akka Persistence plugin maintainers to migrate and release a preview for 2.4.0-RC2. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the <a href="https://doc.akka.io/docs/akka/2.4.0-RC2/project/migration-guide-2.3.x-2.4.x.html#Persistence_Plugin_APIs">Persistence Plugin APIs</a> section in the migration guide.</p> <p>We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.12 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.</p> <h4>General Remarks</h4> <p>Please do what you usually do so well: try out this release candidate and report back when things break, not work as advertised, feel strange, or even when you are happy :-) Especially concerning binary compatibility we will need help from the community (you!) since we cannot run all possible programs ourselves; we base our BC efforts on the <a href="https://github.com/typesafehub/migration-manager">MiMa plugin</a> but that is no perfect guarantee that everything will work out of the box.</p> <p>The artifacts comprising this release have been published to <a href="https://oss.sonatype.org/content/repositories/releases/">https://oss.sonatype.org/content/repositories/releases/</a> and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.11” or “akka-actor_2.12.0-M2”, respectively.</p> <p>17 issues were closed since 2.4.0-RC1. The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC2">2.4.0-RC2 github issues milestone</a>.</p> <h4>Credits</h4> <pre><code>commits added removed 14 919 296 Patrik Nordwall 6 59 27 Konrad Malawski 1 1 1 Ankush Khanna 1 0 5 Marek Kadek 1 20 19 Ostapenko Evgeniy 1 303 19 Veiga Ortiz, Héctor 1 13 13 Yaroslav Klymko 1 1 1 Brendan McAdams 1 110 0 Endre Sándor Varga 1 56148 7695 Roland Kuhn </code></pre> <p><em>Happy hAkking!</em></p>https://letitcrash.com/post/128336355252https://letitcrash.com/post/128336355252Fri, 04 Sep 2015 17:08:51 +0200patriknwRobert Budźko: Akka Streams and Apache Camel<p>Robert explains how simple it is (already!) to <a href="https://rbudzko.github.io/#!/blog/akka-streams-camel">integrate Akka Streams with Apache Camel</a>.</p>https://letitcrash.com/post/128323923147https://letitcrash.com/post/128323923147Fri, 04 Sep 2015 11:48:36 +0200akkastreamscamelktosoplAkka 2.3.13 Released<p><em>Dear hAkkers,</em></p> <p>We—the Akka committers—are pleased to be able to announce the availability of Akka 2.3.13. This is the 13th maintenance release of the 2.3 branch. This release contains a few important fixes:</p> <ul> <li>backport ClusterClient failure detection improvement</li> <li>fix AbstractFSM.onTransition recursion</li> <li>set tcpNoDelay on Netty child channels</li> <li>a fix for a potential PermGen leak problem</li> <li>clear pending connections after quarantine</li> </ul> <p>Akka 2.3.13 is released for Scala 2.10 and 2.11. This release is backwards binary compatible with all previous 2.3.x versions which means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). Always make sure to use at least the latest version required by any of your project’s dependencies.</p> <h3>Migrating from Older Relases</h3> <p>When migrating an existing project from Akka 2.2.x please have a look at the <a href="https://doc.akka.io/docs/akka/2.3.13/project/migration-guide-2.2.x-2.3.x.html">migration guide</a>.</p> <h3>Additional Release Details</h3> <p>The artifacts comprising this release have been published to <a href="https://oss.sonatype.org/content/repositories/releases/">https://oss.sonatype.org/content/repositories/releases/</a> and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.10” or “akka-actor_2.11”, respectively.</p> <p>The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.3.13">2.3.12 github issues milestone</a>.</p> <h4>Credits</h4> <pre><code>commits added removed 5 231 134 Patrik Nordwall 1 2 0 Luben Karavelov 1 4 0 Konrad Malawski 1 110 0 Endre Sándor Varga 1 1 1 Ankush Khanna 1 1 1 Rafał Sujak </code></pre> <p><em>Happy hAkking!</em></p>https://letitcrash.com/post/128258479932https://letitcrash.com/post/128258479932Thu, 03 Sep 2015 15:04:36 +0200patriknwAkka 2.4.0-RC1 Released<p><em>Dear hAkkers,</em></p> <p>we—the Akka committers—are pleased to be able to announce the availability of Akka 2.4.0-RC1 (FIRST RELEASE CANDIDATE). This is what we intend to ship as 2.4.0 final unless issues are found, so please test it thoroughly and report back. Failures are important to hear about, but praise also does not hurt :-)</p> <p>Since the last milestone one week ago the main changes are:</p> <ul> <li>Persistence <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence-query-leveldb.html">Query types for LevelDB</a></li> <li>protobuf serialization for Cluster Sharding, Cluster Client and Cluster Singleton</li> <li>possibility to use <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-sharding.html#Distributed_Data_Mode">Distributed Data module as storage</a> for the state of the sharding coordinator instead of using Akka Persistence, contribution by <a href="https://github.com/smlin">Evgeniy Ostapenko</a></li> <li>improvements of the <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/contrib/receive-pipeline.html">ReceivePipeline</a>, contribution by <a href="https://github.com/jeremystone">jeremystone</a></li> </ul> <p>The key features of the 2.4.0 release are:</p> <ul> <li>we dropped support for Java 6 &amp; 7 as announced in the <a href="https://www.typesafe.com/blog/akka-roadmap-update-dec-2014">last roadmap update</a>, and now require Java 8 or later</li> <li>we dropped support for Scala 2.10, kept 2.11 and added 2.12 (which is at milestone 2 currently); this is in keeping with our policy to support the Scala version that is “current” when the first milestone comes out plus any later version that is published during this series’ lifetime</li> <li><a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence.html">Akka Persistence</a> was promoted to a fully supported module (not experimental)</li> <li>added experimental stream based API for the <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence-query.html">Query Side</a> of Akka Persistence (implementations must be provided by query plugins corresponding to the journal plugins for the various data stores)</li> <li>improved support for Akka Persistence event migrations by <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/serialization.html#Serializer_with_String_Manifest">Serializer with String Manifest</a> and <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence.html#Event_Adapters">Event Adapters</a> and prepared comprehensive documentation of strategies for <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence-schema-evolution.html">schema evolution</a> of persistent events</li> <li>made Akka Persistence <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence.html#Failures">failure handling</a> more robust and support rejections of events</li> <li>Akka Persistence can now use multiple different Journals within one ActorSystem (thanks to <a href="https://github.com/Andrei-Pozolotin">Andrei Pozolotin</a>, who also split out <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-metrics.html">ClusterMetrics</a> into their own module)</li> <li>introduced <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence.html#Persistent_FSM">Persistent FSM</a>, thanks to an awesome contribution from <a href="https://github.com/leonidb">leonidb</a></li> <li>simplified setting up Akka Clusters <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/additional/faq.html#Why_are_replies_not_received_from_a_remote_actor_">behind NAT</a> (including inside Docker containers)</li> <li>we added the experimental <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/typed.html">Akka Typed</a> module previously codenamed Project Gålbma, a new way of formulating Actor interactions with full type-system support</li> <li>we promoted the <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-singleton.html">ClusterSingleton</a>, <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-client.html">ClusterClient</a>, <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/distributed-pub-sub.html">DistributedPubSub</a> and <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-sharding.html">ClusterSharding</a> patterns to fully a supported Cluster Tools module, including various API and configuration improvements</li> <li>ClusterSharding also learnt a few new tricks (<a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-sharding.html#Graceful_Shutdown">graceful shutdown</a>, asynchronous shard allocation, reviving entries after migration thanks to <a href="https://github.com/DomBlack">Dominic Black</a>, and more flexible use of roles [thanks to <a href="https://github.com/rmarsch">Richard Marscher</a>)</li> <li>use custom failure detection in <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/cluster-client.html">ClusterClient</a> to avoid quarantining in case of transient network failures</li> <li>added experimental <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/distributed-data.html">Akka Distributed Data</a> which was previously known as <a href="https://github.com/patriknw/akka-data-replication">Akka Data Replication</a> (see <a href="https://github.com/patriknw/akka-data-replication">akka-data-replication migration guide</a>), the Distributed Data module is useful for sharing eventually consistent data (CRDTs) between nodes in an Akka Cluster</li> <li>the SLF4J logging adapter can now apply the log filtering rules prior to sending to the EventStream, see the <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/project/migration-guide-2.3.x-2.4.x.html#Slf4j_logging_filter">migration guide</a> but the biggest feature is probably that Akka 2.4 will be binary backwards compatible with Akka 2.3, see the detailed description below.</li> </ul> <h4>Things that are Known Missing</h4> <p>The Persistence <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/persistence-schema-evolution.html">schema evolution</a> section of the documentation has not yet been ported to Java, but the text and illustrations of the Scala version apply to both languages. We will complete this before 2.4.0 final.</p> <p>We will most likely not be able to complete the Java API and the documentation for <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/scala/typed.html">Akka Typed</a> for 2.4.0, but the Scala API will be released in order to gather early feedback on this rather exciting new module.</p> <p>We will incorporate Streams &amp; HTTP once ready (to become an experimental module, as usual) into 2.4.x. Note that you can use Akka Streams 1.0 together with Akka 2.4.0-RC1.</p> <h4>Binary Compatibility</h4> <p>Akka 2.4.x is backwards binary compatible with previous 2.3.x versions (exceptions listed below). This means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). It should be noted that Scala 2.11.x is is not binary compatible with Scala 2.10.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version—akka-actor_2.11-2.4.0-RC1.jar is compatible with akka-actor_2.11-2.3.12.jar but not with akka-actor_2.10-2.3.12.jar.</p> <p>Binary compatibility is <strong>not</strong> maintained for the following:</p> <ul> <li>akka-testkit and akka-multi-node-testkit</li> <li>experimental modules, such as akka-persistence and akka-contrib</li> <li>features, classes, methods that were deprecated in 2.3.x and removed in 2.4.x</li> </ul> <p>Being binary compatible means that applications and libraries built on top of Akka 2.3.x continue to work with Akka 2.4.x without recompilation (subject to the conditions below), which implies that Akka Streams &amp; HTTP as well as Play Framework 2.4 can be combined with Akka 2.4.</p> <p>The dependency to Netty has been updated from version 3.8.0.Final to 3.10.3.Final. The changes in those versions might not be fully binary compatible, but we believe that it will not be a problem in practice. No changes were needed to the Akka source code for this update. Users of libraries that depend on 3.8.0.Final that break with 3.10.3.Final should be able to manually downgrade the dependency to 3.8.0.Final and Akka will still work with that version.</p> <p>The dependency to Typesafe Config has been updated from 1.2.1 to 1.3.0 which should be binary compatible for the vast majority users, except for obscure edge cases as its changelog points out. This change was made in order in order to use new JDK8 specific features in the library as well as to align Akka with Play which is now also depending on 1.3.0.</p> <h4>Migration Guide</h4> <p>When migrating a code base to 2.4 please refer to the <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/project/migration-guide-2.3.x-2.4.x.html">migration guide</a> in order to profit from some of the improvements.</p> <p>Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4-M2. This is a good time for Akka Persistence plugin maintainers to migrate and release a preview for 2.4.0-RC1. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the <a href="https://doc.akka.io/docs/akka/2.4.0-RC1/project/migration-guide-2.3.x-2.4.x.html#Persistence_Plugin_APIs">Persistence Plugin APIs</a> section in the migration guide.</p> <p>We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.12 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.</p> <h4>General Remarks</h4> <p>Please do what you usually do so well: try out this release candidate and report back when things break, not work as advertised, feel strange, or even when you are happy :-) Especially concerning binary compatibility we will need help from the community (you!) since we cannot run all possible programs ourselves; we base our BC efforts on the <a href="https://github.com/typesafehub/migration-manager">MiMa plugin</a> but that is no perfect guarantee that everything will work out of the box.</p> <p>The artifacts comprising this release have been published to <a href="https://oss.sonatype.org/content/repositories/releases/">https://oss.sonatype.org/content/repositories/releases/</a> and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.11” or “akka-actor_2.12.0-M1”, respectively.</p> <p>37 issues were closed since 2.4-M3. The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4.0-RC1">2.4.0-RC1 github issues milestone</a>.</p> <h4>Credits</h4> <pre><code>commits added removed 26 9711 418 Patrik Nordwall 5 579 303 Konrad Malawski 1 612 318 Ostapenko Evgeniy 1 3 4 qian miao 1 381 85 Jeremy.Stone </code></pre> <p><em>Happy hAkking!</em></p>https://letitcrash.com/post/127241523632https://letitcrash.com/post/127241523632Fri, 21 Aug 2015 17:28:48 +0200patriknwIBM developerWorks blog on Akka<p>Dennis Sosnoski posted a very nice post explaining some of the <a href="https://www.ibm.com/developerworks/library/j-jvmc6/index.html">core concepts of Akka</a> as well as a non-trivial example on <a href="https://www.ibm.com/developerworks/library/j-jvmc6/index.html">the IBM developerWorks blog</a>, as part of the on-going article series on <a href="https://www.ibm.com/developerworks/views/java/libraryview.jsp?search_by=jvm+concurrency:">jvm concurrency</a>.</p>https://letitcrash.com/post/127065163232https://letitcrash.com/post/127065163232Wed, 19 Aug 2015 11:01:57 +0200akkatutorialintermediateactorsibmktosoplCodecentric Blog: Introduction to Akka actors<p>In their latest blog series on getting started and diving into the Akka ecosystem, Heiko explains the basics of how an Actor works and how to use them properly: <a href="https://blog.codecentric.de/en/2015/08/introduction-to-akka-actors/">Codecentric </a><a href="https://blog.codecentric.de/en/2015/08/introduction-to-akka-actors/">Blo: Introduction to Akka Actors</a></p>https://letitcrash.com/post/126897714162https://letitcrash.com/post/126897714162Mon, 17 Aug 2015 09:59:19 +0200akkabasicsblogactorktosoplAkka 2.4-M3 Released<p>we—the Akka committers—proudly present the third development milestone for Akka 2.4. Since the release of Akka 2.4-M2 (one and a half months ago) much has happened, in particular around Akka Persistence.</p> <p>Besides a plethora of small improvements the main changes relative to 2.4-M2 are:</p> <ul> <li>experimental stream based API for the <a href="https://doc.akka.io/docs/akka/2.4-M3/scala/persistence-query.html">Query Side</a> of Akka Persistence (implementations must be provided by query plugins corresponding to the journal plugins for the various data stores)</li> <li>Akka Persistence <a href="https://doc.akka.io/docs/akka/2.4-M3/scala/persistence.html#event-adapters">event adapters</a> to support separation between domain events and storage representation (not necessarily as bytes)</li> <li>comprehensive documentation of strategies for <a href="https://doc.akka.io/docs/akka/2.4-M3/scala/persistence-schema-evolution.html">schema evolution</a> of persistent events</li> <li>Activator template for Distributed Data in both <a href="https://doc.akka.io/docs/akka/2.4-M3/java/distributed-data.html#Samples">Java</a> and <a href="https://doc.akka.io/docs/akka/2.4-M3/scala/distributed-data.html#Samples">Scala</a></li> <li>pruning of Cluster vector clocks to avoid growth of Cluster gossip message size when nodes are frequently added and removed</li> <li>detect and repair corrupt event streams when replaying Akka Persistence events, such problems may happen when there is a network partition and auto-downing splits the cluster into two separate clusters</li> </ul> <h4>Akka 2.4 Roadmap</h4> <p>The aggressive plan is to release 2.4.0-RC1 by the end of next week (August 14). What remains to be done is:</p> <ul> <li>implement Persistence Query types for LevelDB</li> <li>create protobuf serialization for Cluster Sharding</li> <li>various small improvements</li> </ul> <p>We will most likely not be able to complete the Java API and the documentation for <a href="https://doc.akka.io/docs/akka/2.4-M3/scala/typed.html">Akka Typed</a> for 2.4.0, but the Scala API will be released in order to gather early feedback on this rather exciting new module.</p> <p>We will incorporate Streams &amp; HTTP once ready (to become an experimental module, as usual) into 2.4.x. Note that you can use Akka Streams 1.0 together with Akka 2.4-M3.</p> <p>Please do what you usually do so well: try out our latest milestone and report back when things break, not work as advertised, feel strange, or even when you are happy :-) Especially concerning binary compatibility we will need help from the community (you!) since we cannot run all possible programs ourselves; we base our BC efforts on the <a href="https://github.com/typesafehub/migration-manager">MiMa plugin</a> but that is no perfect guarantee that everything will work out of the box.</p> <h4>Binary Compatibility</h4> <p>Akka 2.4.x is backwards binary compatible with previous 2.3.x versions (exceptions listed below). This means that the new JARs are a drop-in replacement for the old one (but not the other way around) as long as your build does not enable the inliner (Scala-only restriction). It should be noted that Scala 2.11.x is is not binary compatible with Scala 2.10.x, which means that Akka’s binary compatibility property only holds between versions that were built for a given Scala version—<code>akka-actor_2.11-2.4-M3.jar</code> is compatible with <code>akka-actor_2.11-2.3.12.jar</code> but not with <code>akka-actor_2.10-2.3.12.jar</code>.</p> <p>Binary compatibility is <strong>not</strong> maintained for the following:</p> <ul> <li>akka-testkit and akka-multi-node-testkit</li> <li>experimental modules, such as akka-persistence and akka-contrib</li> <li>features, classes, methods that were deprecated in 2.3.x and removed in 2.4.x</li> </ul> <p>Being binary compatible means that applications and libraries built on top of Akka 2.3.x continue to work with Akka 2.4.x without recompilation (subject to the conditions below), which implies that Akka Streams &amp; HTTP as well as the upcoming Play Framework 2.4 can be combined with Akka 2.4.</p> <p>The dependency to Netty has been updated from version 3.8.0.Final to 3.10.3.Final. The changes in those versions might not be fully binary compatible, but we believe that it will not be a problem in practice. No changes were needed to the Akka source code for this update. Users of libraries that depend on 3.8.0.Final that break with 3.10.3.Final should be able to manually downgrade the dependency to 3.8.0.Final and Akka will still work with that version.</p> <p>The dependency to Typesafe Config has been updated from 1.2.1 to 1.3.0 which should be binary compatible for the vast majority users, except for obscure edge cases as its <a href="https://github.com/typesafehub/config/blob/master/NEWS.md#130-may-8-2015">changelog</a> points out. This change was made in order in order to use new JDK8 specific features in the library as well as to align Akka with Play which is now also depending on 1.3.0.</p> <h4>Migration Guide</h4> <p>When migrating a code base to 2.4 please refer to the <a href="https://doc.akka.io/docs/akka/2.4-M3/project/migration-guide-2.3.x-2.4.x.html">migration guide</a> in order to profit from some of the improvements.</p> <p>Old Akka Persistence plugins released for 2.3 are not compatible with the changes that were done in 2.4-M2. We do not plan to do more changes to the plugin API so now is a good time for Akka Persistence plugin maintainers to migrate and release a preview for 2.4-M3. Even though there are rather many API changes since 2.3 in the Persistence plugin API it should not be difficult to migrate. See the <a href="https://doc.akka.io/docs/akka/2.4-M3/project/migration-guide-2.3.x-2.4.x.html#Persistence_Plugin_APIs">Persistence Plugin APIs</a> section in the migration guide.</p> <p>We have carefully made changes in Akka Persistence with the goal that events stored with Akka Persistence 2.3.12 should still be possible to replay with 2.4.x, i.e. no lost data. Specific journal implementations may of course violate that goal.</p> <h4>Additional Release Details</h4> <p>The artifacts comprising this release have been published to <a href="https://oss.sonatype.org/content/repositories/releases/">https://oss.sonatype.org/content/repositories/releases/</a> and also to Maven Central. In addition, we adopted the sbt standard of encoding the Scala binary version in the artifact name, i.e. the core actor package’s artifactId is “akka-actor_2.11” or “akka-actor_2.12.0-M1”, respectively.</p> <p>The complete list of closed tickets can be found in the <a href="https://github.com/akka/akka/issues?q=milestone%3A2.4-M3">2.4-M2 github issues milestone</a>.</p> <h4>Credits</h4> <pre><code>commits added removed 43 5555 2511 Patrik Nordwall 29 7897 1658 Konrad Malawski 3 1422 118 Patrik Nordwall &amp; Konrad Malawski 2 17 2 Endre Sándor Varga 2 12 12 Christopher Batey 2 7 13 Roland Kuhn 1 20 20 Jeroen Gordijn 1 0 19 Martynas Mickevicius 1 6 5 Guido Medina 1 1 1 rsujak 1 392 386 Andrea 1 145 7 Matthew Livesey 1 98 6 leonidb 1 1 2 Marek Kadek 1 2 2 Martynas Mickevičius 1 6 19 kukido 1 2 2 Stephen McDonald </code></pre> <p><em>Happy hAkking!</em></p>https://letitcrash.com/post/126674182192https://letitcrash.com/post/126674182192Fri, 14 Aug 2015 17:35:35 +0200patriknwGlassbeam: Elastically adding and removing nodes using Akka cluster<p>A nice post on how Akka Cluster worked well for Glassbeam for elastically scaling the cluster according to load demand: <a href="https://www.glassbeam.com/elastically-adding-removing-nodes-using-akka-cluster/">https://www.glassbeam.com/elastically-adding-removing-nodes-using-akka-cluster/</a><br/></p>https://letitcrash.com/post/126329719597https://letitcrash.com/post/126329719597Mon, 10 Aug 2015 12:07:00 +0200akkaclusterakka clusterktosoplA Map of Akka<p><a href="https://blog.codecentric.de/en/2015/07/a-map-of-akka">Heiko Seeberger goes through the various Akka modules</a> explaining where they fit in and how they fit together. A great post to get a quick overview of what Akka is all about.</p>https://letitcrash.com/post/125243223637https://letitcrash.com/post/125243223637Tue, 28 Jul 2015 10:02:51 +0200akkaakka httpktosoplUse akka-stream BidiFlows with an IRC client<p>Christian Hoffmeister shared an excellent post about using <b>BidiFlow</b> (the best building block available to represent arbitrary protocols in Akka Streams) to communicate with an IRC protocol: <a href="https://choffmeister.de/posts/2015/07/22/akka-stream-bidiflows.html">Use akka-stream BidiFlows with an IRC client</a></p>https://letitcrash.com/post/124822469572https://letitcrash.com/post/124822469572Thu, 23 Jul 2015 10:27:49 +0200akkastreamsakka streamsreactiveReactive StreamsblogktosoplTim Harper: The Need for Acknowledgement in Streams<p><a href="https://tim.theenchanter.com/2015/07/the-need-for-acknowledgement-in-streams.html">Tim Harper explores adding acknowledgements to operations for Akka Streams</a>, for his RabbitMQ integration <a href="https://github.com/SpinGo/op-rabbit">op-rabbit</a>.</p>https://letitcrash.com/post/124561127692https://letitcrash.com/post/124561127692Mon, 20 Jul 2015 10:30:06 +0200akkastreamsakka streamsscalarabbitackktosoplAkka Streams & Http 1.0 released!<p>Akka Streams and Http reach 1.0! </p><p>See the announcement: <a href="https://akka.io/news/2015/07/15/akka-streams-1.0-released.html">https://akka.io/news/2015/07/15/akka-streams-1.0-released.html</a><br/>Share the love: <a href="https://twitter.com/akkateam/status/621298547812659200">https://twitter.com/akkateam/status/621298547812659200</a></p>https://letitcrash.com/post/124151865112https://letitcrash.com/post/124151865112Wed, 15 Jul 2015 14:58:07 +0200ktosoplAkka 2.3.12 announcement<p>Akka 2.3.12 has been released. More details in the <a href="https://akka.io/news/2015/07/09/akka-2.3.12-released.html">Akka website</a>.</p>https://letitcrash.com/post/123627185012https://letitcrash.com/post/123627185012Thu, 09 Jul 2015 11:00:07 +0200martmic