問題タブ [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.
scala - Scalaがコンパニオンオブジェクトのインスタンス化に失敗するのはなぜですか?
私はScalaとAkkaを初めて使用するので、これが新しい質問である場合はご容赦ください。しかし、他のどこにも答えが見つかりません...
記録のために、私はScala2.9.0-1とAkka1.1.3を使用しており、SBT0.10.1セットアップも含めています。
このメッセージに続くコードは、Akkaでの実験として作成しました。これは、ユーザーデータベースと登録機能のおもちゃバージョンです。基本的な考え方は、UserServerアクターのActorPoolがあり、それぞれがSTMを使用してユーザーの電子メールアドレスをキーオフしたユーザーのマップと対話するMemoryUserDatabaseのインスタンスを持っているということです-非常に単純ですよね?
この問題は、ファイルをコンパイルし、2つの別々のコンソールで以下を実行することで再現できます。
コンソール#1:
インポートtoy.service.user._; ServiceRunner.run
コンソール#2:
インポートtoy.service.user._; ClientRunner.run
これはサーバーコンソールからの出力です(#1)
このエラーは、Scala2.9.1.finalを使用すると少し興味深いものになります。
コードのこの有効な部分は次のとおりです。
コンパニオンオブジェクトを初期化できない理由がわかりません。最も奇妙な部分は、同じことを実行できることですが、サーバーコンソール(#1)で最初にコンパニオンオブジェクトにアクセスする場合は、次のようになります。
MemoryUserDatabase
ServerRunnerを実行する前は、正常に初期化され、その後、他のすべてが正常に初期化されます。
誰かがこれがなぜであるか説明できますか?
ありがとう!イダン
PS。これは私の最初のScalaコードなので、あまり笑わないようにしてください...そして他の提案(文体、哲学、神学など)は大歓迎です。
scala - akka:可変状態の共有
非常にまれにしか変更されないグローバル変数(シングルトン)が1つ必要です。実際には、アクターが再起動し、変数を再初期化したときにのみ変更されます。コンパニオンオブジェクトのシングルトンvalではこれを行うことができないため、var(可変)として宣言する必要があります。
私が読んだ多くのガイドラインは、常に可変状態の共有に反対しています。そこで、変数をクラスに移動し、メッセージパッシングを使用して変数を取得します。
問題は、dbConnectionは多くのアクターによって非常に頻繁にアクセスされ、メッセージを継続的に送信するとパフォーマンスが低下することです(akkaはメールボックスを1つずつ処理するため)。
パフォーマンスを犠牲にせずにこれを行う方法がわかりません。何か案が?
java - AKKA で使用されているこの CCAS ロック機構を理解する方法は?
akka のコードに出くわしました。
私が興味を持っている主要なメソッドを以下に示します。
関連するサブクエスチョンが 2 つあります。
1) このクラス SimpleLock の目的は何ですか
2) それがどのように機能するかについてのヒントや背景知識はありますか?
このコードは JAVA と scala の両方で記述されているため、AtomicBoolean クラスを利用していると思います。したがって、Javaタグも追加します。
どんなアドバイスでも大歓迎です!誰かがこの質問に投票する理由がわかりません。
関連している:
akka - ローカル アクターとリモート アクターをいつ使用するか?
Akka でアクターとリモート アクターを使用する必要があるのはいつですか?
どちらもマシンをスケールアップできることは理解していますが、スケールアウトできるのはリモート アクターだけなので、通常のアクターの実用的な運用はありますか?
リモート アクターの初期設定のオーバーヘッドがわずかで、通常のアクターほど大きなオーバーヘッドがない場合、リモート アクターを使用するのが標準になると思います。実稼働コードをスケールアウトする必要がまったくない場合でも、オプションがあると便利です (バゲージが付属していない場合)。
Actor と Remote Actor をいつ使用するかについての洞察をいただければ幸いです。
web-services - Scala / JavaのWebリクエスト内の並列化/スレッド?
(MongoDBに対して)多数のデータベースクエリを実行し、それらのデータベースクエリによって返されたレコードに対して重要な量の処理を実行しているWebサービスがあります。各Webリクエストは、これらのリクエストの約15〜45を実行する必要があります。これにより、各クエリと処理に約20ミリ秒かかるため、許容できないページ応答時間が発生します。キャッシュミス率が高くなり、データを可能な限り新鮮にする必要があるため、キャッシュは機能しません。
Scala + Akkaとアクターを使用して、クエリの実行と処理を実行するクラスを並列化することを計画していましたが、サーブレットコンテナー内にスレッドを作成することはお勧めできません。ScalaでWebリクエスト内でスレッド化/並列化を行うための推奨される方法は何ですか?
scala - スプレーフレームワークの生産は準備ができていますか?
スプレーフレームワーク(spray.cc)は、ScalaとAkkaを使用してRESTサービスを構築するための楽しく生産的な方法のようです。私はJava+Springの学校から来ました。ここでは、すべてが十分に文書化されており、成熟しており、コミュニティからのサポートも良好です。
スプレーは遊ぶのが楽しいですが、それは荒いエッジを持っています。私は実際のアプリケーションでそれを使用することに懐疑的です。
実稼働環境でSprayを使用した人はいますか?スプレー周辺のオープンソースコミュニティはどうですか?簡単に助けを得ることができますか?
更新: SprayはBlueEyes(https://github.com/jdegoes/blueeyes)とどのように比較されますか?
scala - stdin からアクター メッセージを取得するには?
akka アクターに stdin からメッセージを受信させることが可能かどうか (およびその方法) を知りたいです。基本的に、アイデアは、入力のすべての行がメッセージとしてアクターに送信されるようにすることです。
次に、アクターに「DO X」、「DO Y」などのメッセージを受信させます。
これを行うための標準的な解決策はありますか?
1つの方法はこれを行うことだと思います:
しかし、2 つのアクター (または 1 つのアクターベースのタスクと 1 つのアクター) があり、ブロッキング IO を使用することになります (ちなみに、それはアクターで安全ですか?)... また、制御が難しくなります。 spawn ブロック (タスクを強制終了するなど)。
OPからさらにフォローアップを追加
許可があれば、いくつかフォローアップがあります...
このソリューションを使用すると、パフォーマンスに影響がありますか (つまり
CamelServiceManager
、多くのことを開始しますか? HTTP サーバーなど)?初心者向けの良いチュートリアルはありますか?Akka の公式ドキュメントからCamelを読み始めましたが、現在持っている以上の Camel の知識を前提としているようです。
java.io.InputStream
たとえば、カスタムasの使い方がわかりませんでしたendpointUri
。
actor - Akkaアクターをホットスワップするためのユースケース
Akka 1.1.3のドキュメントには、「このbecome
メソッドはさまざまな用途に役立ちますが、その特に優れた例は、有限状態マシン(FSM)の実装に使用される例です」と記載されています。実行時にAkkaアクターの実装をホットスワップする他のユースケースは何ですか?
トレイトのactorClass
メソッドは、「置き換えなしで削除されます。とActorRef
に直面しても意味がありません」というメッセージで非推奨になりました。誰かがこれを説明できますか?become
unbecome
akka - Akka アクターをキャンセルするには?
リクエストを受け取ってそれに返信する akka アクター (ワーカー) があります。リクエストの処理には 3 ~ 60 分かかる場合があります。発信者(俳優でもある)は現在使用中です!!! ただし、Caller アクターのデザインは必要に応じて変更できます。また、現在 EventDriven ディスパッチャーを使用しています。
ワーカー アクターが解放され、新しいリクエストを受信できる状態に戻るように、リクエスト処理をキャンセル (ユーザーが開始) するにはどうすればよいですか? java.util.concurrent.Future の cancel メソッドに似たメソッドを期待していましたが、Akka 1.1.3 では見つかりませんでした。
編集:
探している動作を取得しようとしましたcompleteWithException
:
しかし、それは長期にわたるプロセスを停止しませんでした.
対照的に、java.util.concurrent.Future の動作を考えてみましょう。
長時間実行されているプロセスを停止するもの
scala - akka.cloud パッケージはどこにありますか?
パッケージ akka.cloud.cluster を含む Akka バージョンを教えてもらえますか? 現在、Akka 1.2-RC6 を使用しています。このトピックを Google 検索すると、Cloudy Akka に関するリンクが壊れます...