1

私は NServiceBus を使用しており、特定のメッセージ タイプにサブスクライブされているクライアントの数を知る必要があります (サブスクライバーの名前がさらに重要です)。私は pub\sub シナリオで話しています。

この情報を NServiceBus で取得することは可能ですか?

どうも

4

2 に答える 2

3

これは、サブスクリプション ストレージから直接引き出すことができます。データベースへのクエリまたはキューの .GetAllMessages() のいずれかで、カウントとサブスクライバー アドレスが取得されます。これをコードで行う場合は、サブスクリプション メッセージのハンドラーを作成し、そのようにカウントアップすることができます。

于 2010-12-24T03:21:14.563 に答える
1

ISubscriptionStorage を使用して成功しました。

public class SubscribersForMessageHandler :
             IHandleMessages<SubscribersForMessageRequest>
{
    public ISubscriptionStorage Storage { get; set; }
    public IBus Bus { get; set; }

    public void Handle(SubscribersForMessageRequest message)
    {
        Bus.Reply<SubscribersForMessageResponse>(m=>
        {
            m.SagaId = message.SagaId;
            m.MessageType = message.MessageType;
            m.SubscriberEndpoints = GetSubscribersForMessage(message.MessageType);
        });
    }

    private List<string> GetSubscribersForMessage(string type)
    {
        return Storage.GetSubscribersForMessage(
          new List<string> { type }).ToList();
    }
}
于 2012-02-29T13:42:43.463 に答える