6

Azure ServiceBus を使い始めたばかりです。1 つのことが完全に明確ではなく、答えを見つけるのに苦労しています。

サブスクリプション メッセージを呼び出した場合message.Complete()、このメッセージは他のサブスクライバーには配信されないということですか、それとも現在のサブスクライバーに対してのみこのメッセージを完了することになりますか? つまり、サービス バスはメッセージをサブスクライバーごと、またはサブスクリプションごとに追跡しますか?

私の特定の使用例では、メッセージを1 人のサブスクライバーだけでなく、すべてのサブスクライバーで処理したいと考えています。これはトピックでまったく可能ですか?

4

3 に答える 3

5

メッセージは、単一の競合するコンシューマによって処理されることを意図しています。それ以外の場合は、メッセージの重複と見なされます。

同じ論理サブスクライバーの複数のインスタンスに同じメッセージを送信する必要がある場合、各サブスクライバーは、既定のフィルターを備えた専用のサブスクリプション キューを持っている必要があります。

たとえば、クラウド サービスを使用する場合、CS ロールのインスタンスごとにサブスクライバーを作成する必要があります。各サブスクリプション キューは一意に識別可能である必要があり、一意の識別子は決定論的である必要があります。1 つのオプションは、CS インスタンス ID を使用することです。プロセスがスケールアウトするたびに、インスタンス ID がサブスクリプション キューに追加されます。このアプローチにも課題があります。プロセスがスケールインすると、未処理のメッセージが残る場合があります。

于 2017-02-19T17:37:03.063 に答える