問題タブ [akka-remoting]
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.
scala - Akka ラウンド ロビン: リモート ルートから送信者への応答の送信
私は Akka Cluster (バージョン 2.4.10) を使用しており、「フロントエンド」の役割に指定されたいくつかのノードと、「ワーカー」として指定されたいくつかのノードがあります。ワーカーはリモート マシン上にあります。着信作業は、フロントエンド アクターによってラウンド ロビン ルーティングによってワーカーに分散されます。問題は、「ワーカー」からの応答をフロントエンド アクターに送り返すことです。作業員が作業を完了しているのがわかります。しかし、ワーカーからフロントエンドに送信されたメッセージは届かず、配信不能になります。ログに以下のエラーが表示されます。
私はこれを見て、コードで同じことに従っています。これも見ましたが、事前にルートがわからないため、提案された解決策はこの場合には適用されません。それは構成を通じてもたらされ、変更される可能性があります。ラウンドロビン ルーターの構成は次のとおりです。
ルーターは、以下のようにフロントエンド アクターでインスタンス化されます。
コントローラーとワーカー コードは次のとおりです。
ここで私が間違っていることを教えてください。あなたの助けに感謝。
scala - Akka リモート: 同じパッケージ名を持たない 2 つの異なるアプリのクラスを操作することは可能ですか?
Akka リモートで通信する 2 つのアプリケーションがあります。
パッケージ内の最初のアプリケーションに 1 つのクラスがありますa
。
2番目のアプリケーションと同じですが、別のパッケージにありますb
:
しかし、クラスのインスタンスを含むアクター メッセージをa
取得するjava.lang.ClassNotFoundException: a.A
と、パッケージ名が異なるために が表示されます。
これを簡単に回避する方法はありますか?
scala - How can I send messages to a remote actor via CLI with Akka remoting?
I have a remote actor, Bar
and a local actor, Foo
. I want to use Foo
to pass messages to Bar
on each invocation of a CLI.
Bar
can be passed messages successfully, but Foo
hangs while waiting for a message. To fix this, I added a sys.exit(0)
at the end of Foo
's main. This causes an association issue with Foo
's system.
How can I shut down my local actor between successive CLI issuances without killing my local actor manually?
Shut up and give me the code!
Foo:
#xA;
build.sbt
#xA;
Main.scala
#xA;application.conf
Bar:
#xA;build.sbt
#xA;Main.scala
#xA;application.conf
Run Foo
with sbt 'run-main Main -m hello'
, and run Bar
with sbt 'run-main Main'
.
Sorry for the long code, but it's the MVCE for my problem.
How can I achieve my desired behavior -- the CLI actor dies between successive CLI invocations with the remote actor waiting for new messages.
scala - Akka - クラスター対応ルーターがノードを起動しない
各ノードがアクターの 1 つのインスタンスを実行する 3 つのノードのクラスターを作成する必要がありますTestActor
。ルーターがそれ自体 (プール) でノードを作成することを望みますが、ルートはクラスターで作成された最初のアクターになるため、ルーターが作成する最初のノードがシード ノードになります。
これは私のコード TestActor.scala です:
および test.conf :
次に、プログラムを実行すると、出力が表示されず、メッセージがdeadLettersに送信されます。
ログは次のとおりです。
scala - Akka spawn をリモート ノードのプロセスにする
アクター システムを作成するときに Akka がどのような責任を負うのかについて、私はちょっと混乱しています。親アクターと 2 つの子アクターの単純なアプリケーションが必要で、各子は別のプロセス (したがって別のノード) に存在します。これで、リモート構成でルーターを使用したり、リモート アクターを起動したりできることがわかりましたが、(間違っていたら訂正してください) このリモート アクターを作成するとき、Akka はプロセスが既に存在し、ノードが既にその上で実行されていることを期待しています。プロセスを実行し、その子アクターをそのノードにデプロイするだけです。Akka にスポーンを行わせる方法はありませんか?
自分でプロセスを作成していないため、これは機能しないコードです。
アプリケーション.conf:
Parent.scala:
および Child.scala:
しかし、Parent.scala でメインを実行した直後に Child.scala 内でこのメインを実行すると、次のようになります。
その後、ノードが接続されます。
それを行う方法がない場合、プロセスがクラッシュしたときに Akka はそのプロセス/ノードをどのように再起動できますか?
akka - Akka Remote - リスナー側の分離を防ぐ
A と B があり、構成されたリモート (netty.udp) (クラスターなし) があるとします。両方とも異なるポートで開始しました。A のアクターは、ルーティングを介して (RemoteRouterConfig を使用し、アドレスによって) B のアクターにメッセージを送信します。彼らはすべてそれを取得し、返信します。作業が完了すると、A は終了します。しばらくして、B が関連付け解除メッセージをログに記録します。
No response from remote. Transport failure detector triggered. (internal state was Open)
Association with remote system [akka.udp://folder@127.0.0.1:2552] has failed, address is now gated for [5000] ms. Reason: [Disassociated]
再び A を起動して B アクターにメッセージを送信しようとすると、メッセージに応答がありません。その分離を防ぐ方法はありますか?または、A の起動時に再度接続する方法はありますか?