私が(Javaで)Akkaを定期的に使用することを妨げているのは、ThreadLocalsを使用するライブラリに関する懸念です。
つまり、一部のAkkaディスパッチャーは、ThreadLocal変数が取り残されたり、すべて一緒に欠落したりする可能性があると思います。したがって、明らかな解決策はThreadLocalsの使用を避けることですが、それらを使用するライブラリは非常に多くあります:Spring、Wro4j、Log4jなど...
ThreadLocalsは通常、サーブレットコンテナで正常に機能します。これは、コンテナにスレッドプールがある場合でも、リクエストは主に同期ライフサイクルであるため、通常、リクエストの最後に、SpringやWro4Jなどがスレッドローカルをクリーンアップします。Tomcatのような一部のコンテナは、スレッドローカルリークを監視します。
私が理解していることから、Akkaではそうではありません。
人々はこの問題をどのように回避しますか?
今のところ、Akkaの使用を避け、メッセージキュー(RabbitMQやActiveMQなど)を使用していますが、非同期の問題/解決策の範囲が広いため、Akkaを使用したいと思います。
Nettyにも同様の問題があると思いますが、Nettyは、ThreadLocalの代わりに使用できるある種のChannel Contextオブジェクトを提供していると思います。理論的には、一部のライブラリはThreadLocalの代わりにそれを使用することを知っているかもしれません。