ようOrderEventHandler
クラスが見えるように私はむしろCommandBus
別々とEventBus
ともICommandHandler<TCommand>
とIEventHandler<TCommand>
を持っているでしょう:CQRS実装のためにMasstransitをラップするのは良い方法ですか?
public class OrderEventHandler :
IEventHandler<OrderPlaced>,
IEventHandler<OrderRegistrantAssigned>,
IEventHandler<OrderTotalsCalculated>,
IEventHandler<OrderConfirmed>,
IEventHandler<OrderExpired>,
IEventHandler<SeatAssignmentsCreated>,
IEventHandler<SeatAssigned>,
IEventHandler<SeatAssignmentUpdated>,
IEventHandler<SeatUnassigned>
{
public void Handle(OrderPlaced @event){...}
.
.
.
}
可能な解決策はMasstransit
インフラと私のCQRS
(のようなConsumerToHandlerAdopter<T>
のみの間で採用を提供することができます私が一般的に必要とするコンテキストの詳細を公開します)。
しかし、私はMasstransit
を初めて使っているので、私は後で対処しなければならないかもしれない問題の周りに頭を浮かべることはできません。
だから私の質問は:私は私自身のインフラストラクチャに対処するよう は、それは一般的に価値がMasstransitをラップしていますか?
ありがとうございます@Alexey Zimarev、私は輸送層としてrabbitmqを使用しています。私は、集計をサガで表現することと、一貫性があるときはいつでも、aggregate.method()を呼び出して返されたイベントを公開することを目指していました。特定の状態になった後で集約は必要ないので、削除することができます。 – Mohsen
私は集団としてサガを使用するいくつかのプロジェクトを持っています。これはかなりうまくいくが、別々の読み書きモデルはない。同時に、私はEventStore https://github.com/alexeyzimarev/MassTransit.EventStoreIntegrationのサガ・パーシスタンスを作成しました。これを使用することで、EventSourceサガを使用して、EventStore経由で接続された投影を使用して読み込みモデルを構築できますキャッチアップサブスクリプション。 –
誰かがそれをやったのを見るのはうれしいですが、イベントストア(または何らかのバッチイベントのパブリッシング)を持っていないという問題は、あなたが言及したように部分的に起こった事実を公表するかもしれないということです。すべてのファクトが正常に公開されている場合は、状態をチェックして変更することで管理することができます(Ifはドメインに適合します)。 – Mohsen