2017-02-06 7 views

答えて

1

永続エンティティコマンドハンドラと永続コールバック後は、try/catchブロックにラップされます。例外がキャッチされると、その例外はctx.commandFailed(...)に渡されます。

気付いている2つの微妙な違いがあります。例外をスローすると、コマンドの処理はもちろん停止します。ただし、ctx.commandFailed(...)に例外を渡すと、例外がコマンドの呼び出し元に返されますが、処理は停止しません。あなたは、理論的には、イベントを持続させるためのいくつかの指示を返すことができます。これは奇妙なことです。実際には、ctx.commandFailed(...)を呼び出した後にctx.doneを返す必要があります。

一般に例外をスローするのはもっと簡単で安全です。

+0

私は2つのオプションが比較的同等であると理解していたと思っていましたが、例外をスローするとOneToOneStrategy(表面的にはアクターが再起動されたため)からのログになります。 ctx.commandFailed(throwable)と同じログが表示されないため、重大な違いがあるようです。私は本当に私のエンティティが失敗したすべてのコマンドを記録するのを望んでいないので、後者を選択しました。しかし、私は他の違いがあるのだろうかと思っています。 – dres

関連する問題