問題タブ [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.

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

scala - Akka ラウンド ロビン: リモート ルートから送信者への応答の送信

私は Akka Cluster (バージョン 2.4.10) を使用しており、「フロントエンド」の役割に指定されたいくつかのノードと、「ワーカー」として指定されたいくつかのノードがあります。ワーカーはリモート マシン上にあります。着信作業は、フロントエンド アクターによってラウンド ロビン ルーティングによってワーカーに分散されます。問題は、「ワーカー」からの応答をフロントエンド アクターに送り返すことです。作業員が作業を完了しているのがわかります。しかし、ワーカーからフロントエンドに送信されたメッセージは届かず、配信不能になります。ログに以下のエラーが表示されます。

私はこれを見て、コードで同じことに従っています。これも見ましたが、事前にルートがわからないため、提案された解決策はこの場合には適用されません。それは構成を通じてもたらされ、変更される可能性があります。ラウンドロビン ルーターの構成は次のとおりです。

ルーターは、以下のようにフロントエンド アクターでインスタンス化されます。

コントローラーとワーカー コードは次のとおりです。

ここで私が間違っていることを教えてください。あなたの助けに感謝。

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

scala - Akka リモート: 同じパッケージ名を持たない 2 つの異なるアプリのクラスを操作することは可能ですか?

Akka リモートで通信する 2 つのアプリケーションがあります。

パッケージ内の最初のアプリケーションに 1 つのクラスがありますa

2番目のアプリケーションと同じですが、別のパッケージにありますb:

しかし、クラスのインスタンスを含むアクター メッセージをa取得するjava.lang.ClassNotFoundException: a.Aと、パッケージ名が異なるために が表示されます。

これを簡単に回避する方法はありますか?

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

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:

build.sbt

#xA;

Main.scala

#xA;

application.conf

#xA;

Bar:

build.sbt

#xA;

Main.scala

#xA;

application.conf

#xA;

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.

0 投票する
0 に答える
175 参照

scala - Akka - クラスター対応ルーターがノードを起動しない

各ノードがアクターの 1 つのインスタンスを実行する 3 つのノードのクラスターを作成する必要がありますTestActor。ルーターがそれ自体 (プール) でノードを作成することを望みますが、ルートはクラスターで作成された最初のアクターになるため、ルーターが作成する最初のノードがシード ノードになります。

これは私のコード TestActor.scala です:

および test.conf :

次に、プログラムを実行すると、出力が表示されず、メッセージがdeadLettersに送信されます。

ログは次のとおりです。

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

scala - Akka spawn をリモート ノードのプロセスにする

アクター システムを作成するときに Akka がどのような責任を負うのかについて、私はちょっと混乱しています。親アクターと 2 つの子アクターの単純なアプリケーションが必要で、各子は別のプロセス (したがって別のノード) に存在します。これで、リモート構成でルーターを使用したり、リモート アクターを起動したりできることがわかりましたが、(間違っていたら訂正してください) このリモート アクターを作成するとき、Akka はプロセスが既に存在し、ノードが既にその上で実行されていることを期待しています。プロセスを実行し、その子アクターをそのノードにデプロイするだけです。Akka にスポーンを行わせる方法はありませんか?

自分でプロセスを作成していないため、これは機能しないコードです。

アプリケーション.conf:

Parent.scala:

および Child.scala:

しかし、Parent.scala でメインを実行した直後に Child.scala 内でこのメインを実行すると、次のようになります。

その後、ノードが接続されます。

それを行う方法がない場合、プロセスがクラッシュしたときに Akka はそのプロセス/ノードをどのように再起動できますか?

0 投票する
0 に答える
172 参照

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 の起動時に再度接続する方法はありますか?