2

Tomcat 内の ActorSystem 経由で akka 2.1.2 を使用していますが、シャットダウンに問題があります。実際のアクターをシャットダウンする system.shutdown() を呼び出していますが、スケジューラとディスパッチャの 2 つの akka スレッドが残され、Tomcat の停止をブロックしています。

system.scheduler.asInstanceOf[DefaultScheduler].close() を呼び出してスケジューラをシャットダウンすることができました (Scheduler トレイトには close メソッドがないため、キャストが必要です)。ただし、ディスパッチャ スレッドを停止する方法がわかりません。system.dispatcher.shutdown() (保護されたメソッド) を呼び出すことができるように、akka.actor パッケージでオブジェクトを作成する危険な手法を試しましたが、うまくいきませんでした。まだ 1 つ以上の akka ディスパッチャ スレッドがハングしています。その後あたり。

ディスパッチャ スレッドをシャットダウンするにはどうすればよいですか? 機能する限り、理想的/正しい方法である必要はありません。

4

1 に答える 1

2

シャットダウン方法があるかどうかはわかりませんが、役立つ方法が 2 つあります。ドキュメントに書かれているように:

ディスパッチャーにアクターが登録されていない場合、ディスパッチャーは自動的にシャットダウンするまでどのくらい待機し、デフォルトで akka 構成の「akka.

akka.actor.default-dispatcher.shutdown-timeoutreference.conf に設定してdetachから、ディスパッチャからアクターできます。

于 2013-07-16T06:57:02.547 に答える