0

クラスター シャーディング用に Akka Actor を構成しようとしていますが、よくわからないことの 1 つは、エンティティに対して複数の停止メッセージを構成して、正常なシャットダウンを行うことができるかどうかです。

たとえば、次のようなエンティティ構成は、「onDelete」と「onExit」の両方に対して正常なシャットダウンをトリガーしますか、それとも「onExit」に対してのみ実行しますか?

sharding
   .init(
       Entity(Actor1Key) {
          context => ....
       }
   )
   .withStopMessage(Actor1.onDelete)
   .withStopMessage(Actor1.onExit)

そうでない場合、どうすればこの行動を達成できるかわかりませんか?

回答ありがとうございます

4

2 に答える 2

0

指定したものは、 の停止メッセージのみをトリガーしますActor1.onExit。その理由は、エンティティの停止メッセージがどのように定義されているかです。

val stopMessage: Optional[M],

したがって、これは単純なオプションであるため、複数の要素は使用できないことがわかります。ここでwithStopMessageがどのように実装されているかを確認することもできます:

def withStopMessage(newStopMessage: M): Entity[M, E] =
    copy(stopMessage = Optional.ofNullable(newStopMessage))

したがって、基本的には、 を呼び出すたびにメッセージを「上書き」しますwithStopMessage。残念ながら、複数の停止メッセージを指定する他の方法は知りません (共通の特性で複数のメッセージを組み合わせる以外に、これはあなたが探しているものではないと思います)。

于 2020-05-11T20:29:33.313 に答える