質問
で初めて質問したういうことは別の質問です。これは一つの建築の俳優によるアプリケーション.
身体の安全を確保するためのメッセージパスはアプリケーション
う作品のJavaコード:
public void deleteTrades(User user, Date date) {
PermissionSet ps = permissionService.findPermissions(user)
if (ps.hasPermission("delete")) {
Set<Trade> ts = peristence.findTrades(date);
reportService.sendCancelReports(ts);
positionService.updateWithDeletedTrades(ts);
}
}
このコードに対して4つの成分の相互作用について必要な手続き deleteTrades
で定義されています。で完全に記載されている方法に deleteTrades
.
モデリングのこと Actor
s-交換私の4コンポーネントの4つの別々の俳優、どうやって追跡(心に)の手続きは?特にがんの使用を避ける !?
オペレーター、こんなメッセージを送信する ConditionalDelete
私 PermissionActor
, するメッセージを送信する GetTradesAndDelete
私 PersistenceActor
して送信さらにメッセージなどなど。このコードを削除すばらばらになったきます。
でも毎年、建国記念の俳優のニーズに応じた個別アドバイスを他の俳優のためのメッセージを発信).
としての私の前の質問には、人々はどう対応す。あのモデリングツールでき追跡しています。人利用 !?
今回も多くの構成要素 Actor
s?
解決
ご利用の5つの部品ですね。が主体を扱う特別な業務があり、オーケストレータです。
の質問が必要ですのはもちろん、どんチェーンこのassynchronously.はい、もう少しやすいが可能であり、これまでのように曖昧にしています。原則的には個人契約の場合は、ご送信各componenentに回答しています。
react {
case DeleteTrades(user,dates) =>
PermissionService ! FindPermissions(user, DeleteTradesPermissions(dates) _)
case DeleteTradesPermissions(dates)(ps) =>
if (ps hasPermission "delete")
Persistence ! FindTrades(date, DeleteTradesTradeSet _)
case DeleteTradesTradeSet(ts) =>
ReportService ! SendCancelReports(ts)
PositionService ! UpdateWithDeletedTrades(ts)
}
ここで使用していまcurryingへのパス"の日"に返答えになります。場合のコミュニケーションも楽しみのパラメータを伴う相互作用すると良いのかの情報についても取引は現地のパラメータは、HashSetには、パストークンとするお客様にはお勧めです。する情報を受けたと言えるのでしょうか。
なお、このシングル俳優対応できる複数の並行行動します。この場合、削除の取引ものとして追加できるための措置で対応します。のに必要なデータをワンアクションでは、その行動が続きます。
編集
こちらはワどのようにこれらのクラスが定義でき
class Date
class User
class PermissionSet
abstract class Message
case class DeleteTradesPermission(date: Date)(ps: PermissionSet) extends Message
case class FindPermissions(u: User, r: (PermissionSet) => Message) extends Message
FindPermissions(new User, DeleteTradesPermission(new Date) _)
数説明curryingています。のクラス DeleteTradesPermission
で画廊できるように合格 Date
でも、他の機能を完了し PermissionSet
.このパターンの応答メッセージ
現在、このクラス FindPermissions
を受けとして、第二のパラメータである。の俳優を受けたメッセージの戻り値にはこの関数を受け Message
送信するとしています。この例では、メッセージを持つ Date
, は、俳優の呼び出しの送付 PermissionSet
, の回答を俳優が提供することは致しま
ていない場合に答えるなどの場合 DeleteTrades
, SendCancelReports
や UpdateWithDeletedTrades
この例では、そんなに合格する必要があり、機能お車でお越しの際は、メッセージ。
以来が見込まれる機能を返しますメッセージとしてのパラメータの方にメッセージを必要と考えたのが、この形質のようになります:
trait MessageResponse1[-T1] extends Function1[T1, Message]
trait MessageResponse2[-T1, -T2] extends Function2[T1, T2, Message]
...
他のヒント
俳優はご使用にならないでください交換し伝統的なサービス部品なします。
多くのサービスコンポーネントを書いています現在では、研修が、無国籍.無国籍サービスコンポーネントを管理のしやすさ(サンメッセージのクラスなど)によ係しあっています。一つのものが足りないものの、比較的アクターには非同期実行します。がお客様の結果を返し同時に、同期状態なしでサービス部品は、イブレア城、イブレアの仕事です。
俳優のイメージがある場合の内部状態を管理いたします。ありませんが必要な内部同期に関する法律"()"にアクセスの状態と心配が走る。そして、"!?" 使用しない内部に関する法律"()",deadlocking最小化されるべきである。
俳優の注意を払うべき他のブロック処理を行わな取り扱います。以来、俳優の加工メッセージが順次、時間も待ってブI/O内に関する法律"()"できなかっ程その他のメッセージをボックス.のスカラムにはこちらをご利用は別のアドホック俳優れは、実際にブロック動作します。この抗パターンに影響するイベント(react)の俳優ものでブロックのスレッドにイベントに基づく俳優がピギー担保につながります。
ら、お電話サービスコンポーネントを潜在的にブロックください規模に変換係しあっています。