sql >> データベース >  >> NoSQL >> MongoDB

ハンドラーのタイプに基づいてトピックを持つようにRebusを構成する方法

    あなたの質問と混同しているように思われることがいくつかあります。

    しかし、あなたの基本的な質問は、各メッセージが各サブスクライバーによって1回だけ処理されるようにする方法だと思います。

    答えは非常に簡単です。サブスクライバーごとに個別のエンドポイントを設定します。これは、各サブスクライバーが、メッセージの処理元と失敗したメッセージの返送先となる独自の入力キューを持つことを意味します。

    その後、各サブスクライバーに必要な数のハンドラーを含めることができます。互換性のあるすべてのハンドラーは、着信メッセージごとに実行されます。

    Rebusを使用すると、Configure.With(...).(...).Start()を呼び出すたびに 個別のエンドポイントが提供されます。そのため、この場合、サブスクライバエンドポイントの作成をメソッドでラップすることをお勧めします。このメソッドは、次のように呼び出すことができます。

    var event1Subscriber = CreateSubscriber("subscriber_event1");
    event1Subscriber.Subscribe<Event1>().Wait();
    
    var event2Subscriber = CreateSubscriber("subscriber_event2");
    event2Subscriber.Subscribe<Event2>().Wait();
    
    var event3Subscriber = CreateSubscriber("subscriber_event3");    
    event3Subscriber.Subscribe<Event3>().Wait();
    
    // ...
    

    ここで、CreateSubscriber その場合、次のようになります:

    public IBus CreateSubscriber(string queueName)
    {
        return Configure.With(GetContainerAdapter())
            .Transport(t => t.UseMsmq(queueName))
            .Start();        
    }
    



    1. 並べ替えは、MongoDBの`$or`および`$in`クエリでどのように機能しますか?

    2. Ruby on Rails MongoidとWebfaction:クエリが許可されていません(エラー16550)

    3. MongoDBを使用してフィールドの値の数を制限する

    4. クエリが単純でインデックスに合わせられているにもかかわらず、MongoDBクエリが不当に遅い