2017-01-24 3 views
0

私は現在、CQRSLiteのフレームワークと、バスの実装としてのMassTransitの使い方を知りたいと思っています。私は現在、適切にあなたが常に2つのインターフェイスを実装することができ、このCQRSLiteとMassTransitのインテグレーション

public class InventoryCommandHandlers : ICommandHandler<CreateInventoryItem> 
{ 
    public void Handle(CreateInventoryItem message) 
    { 
     // do some job... 
    } 
} 

public class InventoryListView : IEventHandler<InventoryItemCreated> 
{ 
    public void Handle(InventoryItemCreated message) 
    { 
     // do some job... 
    } 
} 

答えて

1

のようなハンドラにメッセージをルーティング(コマンドやイベント)に順番にMassTransit側の消費者を登録する方法を、持っているんだということ

問題:

public class InventoryCommandHandlers : 
    ICommandHandler<CreateInventoryItem>, 
    IConsumer<CreateInventoryItem> 
{ 
    public void Handle(CreateInventoryItem message) 
    { 
     // do some job... 
    } 

    public Task Consume(CreateInventoryItem message) 
    { 
     Handle(message); 
     return Task.FromResult(true); 
    } 
} 

public class InventoryListView : 
    IEventHandler<InventoryItemCreated>, 
    IConsumer<InventoryItemCreated> 
{ 
    public void Handle(InventoryItemCreated message) 
    { 
     // do some job... 
    } 

    public Task Consume(InventoryItemCreated message) 
    { 
     Handle(message); 
     return Task.FromResult(true); 
    } 
} 

しかし CQRSLiteは本当に、分散コンテキストでそれを使用して任意の利点が表示されない、インプロセスの使用のために設計されているようです。

元のm-rリポジトリを見て、独自のベースライブラリを実装することを強くお勧めします.1/2日しかかかりません。

また、AggregateSourceProjacをご覧になると、インスピレーションを得ることができます。また、それらを使用することもできます。これらは非常に良い例です。

+0

ありがとう、Alexey! CQRSLiteは、プロセス内での使用についてのみ私には見えません。それはかなり良い抽象分離を持っているので、適切な実装でうまくいくはずです。もちろん、2つのインターフェースはオプションですが、この場合は、バスのみの実装ではなく、MassTransitにコードを結合します。私はMTなしでRabbitMQとの直接コミュニケーションを見なければならないように見えます。共用リンクもありがとうございます。 –

+0

私たちは、大量のプロジェクトで、コマンドトランスポートとクロス-BCドメインイベントトランスポートとしてMassTransitを使用しています。私はRabbitMQクライアントを使用してどのように正直にあなたを助けるか分からない。コマンドハンドラはインフラストラクチャとドメインモデルの間にあります。したがって、コマンドハンドラがMTメッセージを消費する場合は完全に問題ありません。 –

+0

CQRSLiteが進行中であることについての私の前提は、コマンド/イベント処理に関してMediatRとの類似点から来ています。 –

関連する問題