問題タブ [akka]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1502 参照

scala - scala/akka または go が適している問題

Go を最近調べてみると、Go と Scala/Akka の間で類推できるように思えます。akka Actor は goroutine に似ており、ActorRef は Go チャネルに似ています。

プラットフォーム タイプの問題 (JVM かどうか) 以外に、どちらかを選択するように導く機能上の違いは何ですか?

0 投票する
3 に答える
2649 参照

java - Java でアクターをテストするにはどうすればよいですか?

私がこれまでに目にした唯一のことは、誰かが TypedActor をテストする例を投稿したことです。Junit を介して UntypedActor をテストする方法はないと思いますか? Akka のドキュメントは日ごとに改善されていますが、テストについては言及されていません。それは本当に明白で、何かが足りないのですか?

0 投票する
3 に答える
7255 参照

scala - Scala での複数のアクターの実装はどのように異なりますか?

Scala 2.9.0 のリリースに伴い、Scala 言語と Akka フレームワークを組み合わせた Typesafe Stack も発表されました。現在、Scala には標準ライブラリにアクターがありますが、Akka は独自の実装を使用しています。そして、他の実装を探すと、Lift と Scalaz にも実装があることがわかります!

では、これらの実装の違いは何ですか?

0 投票する
1 に答える
972 参照

python - python-twisted ベースのコードを scala に移植: フレームワークのアドバイスが必要

Python で書かれたコードをツイストで scala に大量に移植しようとしており、どのフレームワークの組み合わせを選択するかについて意見を求めています。

これは基本的に RPC (カスタム protobuf ベース + xmlrpc)/HTTP サーバーとクライアントであり、データベースの保持と変換を行いますが、後でこの書き換えの範囲外のワーカーに rpcs を送信します。

RPC スタックを実装するためのネットワーク IO/ベースとして、netty を使用しています。古いもののすべてのワークフローは twisted の Deferred に基づいていました。それを置き換えるために、ChannelFuture を直接使用するか、scalaz.Promise または akka.Future 内にラップすることを現在検討しています。

質問の一部は、コールバックを手動で操作するよりも簡単に実行できるかということだと思います。このルートを選択した場合、後でいくつかのラッパーを追加して継続を使用することで単純化できると思いますが、最初から別のものを使用する必要があるのでしょうか?

アクター モデル内のワークフローに合わせようとしましたが、stdlib アクターでは機能しないようです。

ありがとう。

更新: Finagle は、Twisted に非常によく似ているか、少なくとも偶然似ているようです。twitter.util.Future は twisted の Deferred によく似ています。なのでとりあえず使っています。

更新 2:そもそも移植した理由は、静的型付けとパフォーマンスです。

0 投票する
1 に答える
1077 参照

scala - マスタータスクを起動してブロックする方法は?

私はscalaでakkaを始めようとしています。メインの scala スレッドで、akka アクターを開始し、それに 1 つのメッセージを送信して、そのアクターが終了するまでブロックしたいと思います。これを行う最善の方法は何ですか?

たとえば、自分自身に繰り返しメッセージを送信するテスト アクターがあります。

そしてそれは次の方法で呼び出されます:

そのブロックの実行には、数ミリ秒と予想されるのではなく、5,000 ミリ秒強かかるため、デフォルトの将来のタイムアウトに関係しているようで、プログラムは実際には終了しません。私が実際にやろうとしているのは、x 数のメッセージを送信するパフォーマンスの時間を測定することだけです。何が起きてる?

0 投票する
1 に答える
500 参照

scala - スケーラブルな Web サービス サーバーを作成するための最適な言語/ライブラリの選択は何ですか?

私はゲームの普及とサービス プラットフォームを作成するプロジェクトに携わってきました。これにより、ゲーム開発者はゲームの配布と更新を簡単にアウトソーシングできるようになり、実績、ランキング、友人などのマルチプレイヤー/コミュニティの特定の部分を提供できるようになります。 SOAP または REST API のいずれかの形式の webservice。

市場シェアを獲得するという点でそれがどれほど実行可能かはわかりませんが、可能なユーザーの数を吸収するために、アプリケーションは水平方向に適切にスケーリングするように作成する必要があります. プロジェクトはまだ初期段階にあるため、使用する言語とテクノロジーに関して、ある程度の影響力があります。

これまでのところ、私の調査では、選択を Erlang または JVM ベースの言語に絞り込んでいます。
Erlang は、スケーラブルでフォールト トレラントな分散アプリケーションに重点を置いており、実績が証明されていることで広く知られていますが、その一方で、そのライブラリ エコシステムは JVM ほど豊かではありません。一方、JVM 言語は多数のライブラリを備えた大きなコミュニティを楽しんでいます。その多くは、Terracota や Akka などの分散型で信頼性の高いサービスを提供しようと努めています (Erlang に触発されているようですが、どれだけのライブラリが含まれているかはわかりません)。それが近づいてそれについて聞きたいのは強みです)。
言語の生産性は、プラットフォームの強度と信頼性と同じくらい重要であるため、JVM を使用する場合は、Java よりも Scala または Clojure に傾倒します。もちろん、そのようなタスクにより適した別の言語 (JVM または非言語) があると思われる場合は、それについて聞いてみたいと思います。

言語のクールな機能の箇条書きのリストを読むのは好きではありません。それは私が自分でグーグルで検索できるものだからです。むしろ、そのようなアプリケーションを作成したあなた自身の経験に興味があります (これらのブログ投稿の流れに少し似ています -リンク) 。 、生のパフォーマンスだけでなく、言語とライブラリの問題にも関係します。

このようなタイプのプロジェクトで、あなた (またはあなたの会社) の言語とテクノロジの選択は何でしたか、そのような選択の動機は何か、選択したプラットフォームを使用した経験はどのようなもので、最終的にどのような結果をもたらしましたか。
すべての洞察は大歓迎です。)

0 投票する
1 に答える
322 参照

jakarta-ee - Akka は、個別の EJB 間で単一のデータ ビューを共有するのに適していますか?

クラスタ化された JavaEE アプリケーションがあります。類似の EJB 間でデータ構造の単一ビューを共有したいと考えています。

データベースを更新するために EJB が互いに競合することは望ましくなく、メモリ内で状態を共有したいと考えています。

Akka はここで役に立ちますか? おそらく取引者?

0 投票する
1 に答える
933 参照

scala - scalaはakkaの自己変数が好きではありませんか?

私のコードで次のエラーが発生しています: error: not found: value self

0 投票する
3 に答える
8771 参照

scala - Akka Actor not terminating if an exception is thrown

I am currently trying to get started with Akka and I am facing a weird problem. I've got the following code for my Actor:

And this is how I start my workers:

And this is how I shut everything down:

Now what happens is if I send the workers messages with n > 0 (no exception is thrown), everything works fine and the application shuts down properly. However, as soon as I send it a single message which results in an exception, the application does not terminate because there is still an actor running, but I can't figure out where it comes from.

In case it helps, this is the stack of the thread in question:

PS: The thread which is not terminating isn't any of the worker threads, because I've added a postStop callback, every one of them stops properly.

PPS: Actors.registry.shutdownAll workarounds the problem, but I think shutdownAll should only be used as a last resort, shouldn't it?

0 投票する
2 に答える
2917 参照

scala - akka アクターでのメッセージ配信シーケンス

私は Akka にかなり慣れていないので、リファレンス マニュアルで答えを見つけることができませんでした。

3 台のマシン (A、B、C) のクラスターにリモート アクターが分散しているとします。この場合、各マシンには 1 つのアクターが存在し、他の 2 つのアクターには他の 2 つのアクターへのactorRef があります。

アクター A は次のコードを実行します。

アクター B は、メッセージ ハンドラーで次のコードを実行します。

アクター C は、メッセージ ハンドラーで次のコードを実行します。

次の仮定を立てることができますか (もしあれば):

  1. アクター B は、msg2 を取得する前に msg1 を取得します

  2. アクター A は msg4 を取得する前に msg5 を取得します

そして、おそらく上記の理解につながるフォローアップの質問: Is message sent by the ! オペレーターはネットワークを介して真に非同期に処理するのか、それとも受信メールボックスがそれを取得するまで待機するのか? つまり、行を行います

アクター B がメールボックスにメッセージを取得するまでブロックするか、配信を処理して実行を続けるスレッドを生成するか

アクター B が msg1 を受け取ったことを知る前に?