3

次のようなファイル application.conf を src/main/resources に作成しました。

balancing-dispatcher {
  type = BalancingDispatcher
  executor = "thread-pool-executor"
}

ファイルには他に何もありません。

ディスパッチャーを使用しようとする新しいアクターを (Akka TestKit を使用したテスト スイートを通じて) 作成すると、次のエラー メッセージが表示されます。

[WARN] [04/13/2013 21:55:28.007] [default-akka.actor.default-dispatcher-2] [Dispatchers] Dispatcher [balancing-dispatcher] not configured, using default-dispatcher

その後、単一のスレッドしか使用していませんが、私のプログラムは正しく実行されます。

さらに、プログラムをライブラリにパッケージ化するつもりです。akka docs には次のように記載されています。

If you are writing an Akka application, keep you configuration in application.conf at
the root of the class path. If you are writing an Akka-based library, keep its 
configuration in reference.conf at the root of the JAR file.

これまでのところ、これらの方法の両方を試しましたが、どちらもうまくいきませんでした。

何か案は?

4

1 に答える 1

2

あなたapplication.confが見つからないのでsrc/main/resources、ビルド パスの一部ではないとしか思えません (ビルドに使用するツールを知らなければ、これ以上コメントすることはできません)。

ちょっとしたこと:なぜあなた"thread-pool-executor"はそこに使うのですか?デフォルトの"fork-join-executor"方がスケールしやすいことがわかりました。

1 つのスレッドに関するあなたのコメントは、アクターを 1 つだけ作成していることを示唆しています。を使用してBalancingDispatcherも、より多くのアクターが自動的に作成されるわけではありません。何らかの方法で Akka にそれを行うように指示する必要があります (たとえば、同じアクターの複数のインスタンスを手動で、または を介し​​て作成しますRouter)。

reference.conf対の問題はapplication.conf、設定の性質の 1 つです。ライブラリが構成から独自の設定を取得したい場合は、デフォルト値を に入れる必要がreference.confあります。これが設計コンセプトであり、このファイルが常に暗黙的にマージされる理由です。デフォルトはそのファイルにのみ存在し、コードには存在してはなりません。

于 2013-04-14T13:09:17.807 に答える