2

私が持っている:
は - QUEUE0
と1つの加入者SUB - QUEUE1
とパブリッシャPUB1 - キュー2
とパブリッシャPUB2 - イベントMyEvent両方の出版社NServiceBusでイベントパブリッシャーをスコープ/グループ化することはできますか?

によって公開されているがとき:
は - SUBは、明示的にサブスクライブ - SUBもREC
:キュー名QUEUE1のみ

subscriberEndpointConfiguration.UnicastRouting().AddPublisher("PUB1", typeof(MyEvent)); 

結果とPUB1 eives期待

(キュー名キュー2を持っている)PUB2からMyEvent
- それはNSBのwikiから、その出版社のキュー名

に加入していないので、PUB2からMyEventを受けるべきではありませんSUB:

サブスクライバーは、1つ以上のクラスに関心を示し、興味のあるメッセージのみを受信します(存在する場合は、それが存在する場合)。

質問

  1. 上に示したAddPublisher方法で発行者のエンドポイントを指定してのポイントは何ですか? Azureテーブルストレージのサブスクリプションテーブルにはイベントタイプとサブスクライバ列のみがあり、パブリッシャエンドポイントは格納されません。

  2. AddPublisherが時代遅れの方法である場合、endpointInstance.Subscribe<MyEvent>()は単に失敗します。「パブリッシャーは見つかりませんでした」と表示されます。

  3. 1つのイベントタイプがMyEventの場合、同じキュー名で作成されたパブリッシャからイベントを受信することは可能ですか?
    など。 QUEUE-AのPUB1、QUEUE-AのPUB2、QUEUE-BのPUB3、QUEUE-AのAddPublisherのSUBを作成するので、SUBはPUB3(QUEUE-B)からMyEventを受信しません。

私が使用している:
NServiceBus 6.0.0-beta0004
NServiceBus.Persistence.AzureStorage 1.0.0-beta0004
NServiceBus.Azure.Transports.WindowsAzureStorageQueues 7.0.0-beta0004

+0

Pub1とPub2の両方が同じ「IEndpointInstance」を使用していますか? (基本的に同じホストにあります)。そして、彼らは同じPersistance設定を使用していますか? 'BusConfiguration.UsePersistence ()。TableName(" tableName ")'?私は、各パブリッシャーがそれ自身のキュー(来るサブスクリプションメッセージで受信する)を必要とするだけでなく、サブスクリプションを格納する独自の永続性テーブルを必要とすると思います。私は出版社が出血なくテーブルを共有できるとは思わない。 –

答えて

3
  1. Azureストレージキュー輸送はpub/sub using persistenceをサポートしています。パブリッシャエンドポイントを指定する必要があるため、起動時にサブスクライバがサブスクリプションメッセージを送信できるようにする必要があります。デフォルトでは、すべてのエンドポイントが同じ共有ストレージテーブルを使用しているため、記述した内容を経験するのはそのためです。エンドポイントごとにサブスクリプションを分割すると(各エンドポイントは独自のストレージテーブルを持つことになります)、SUBはサブスクライブされている唯一のパブリッシャであればPUB1からイベントを受信することになります。

  2. AddPublisher()は、廃止された方法ではありません。廃止されたメッセージはそのようにマークされます。つまり、現在のベータステージではルーティング機能を変更することができます。

  3. 範囲指定は、フィリップ氏が概説した方法で行うことができます。同時に、同じイベントを生成する2つの異なるエンドポイントがある理由を調べることをおすすめします。通常、1つのエンドポイント(またはそのすべてのインスタンス)でイベントをユニークにしたいが、2つ以上の異なるエンドポイントではイベントを発生させたくない。

+0

私たちは共通のサービス実装を持っているシナリオを持っています。ここでは、各インスタンスには興味のあるサブスクライバのグループがあります。さらに、特定の加入者だけがイベントを受信できるように、イベントにタグを付けることもできます。 –

1

を各パブリッシャは独自のキューに加えて独自の永続性テーブルを必要とします。

セットアップ、各出版社のIEndpointInstance

busConfiguration 
    .UsePersistence<AzureStoragePersistence, StorageType.Subscriptions>() 
    .TableName("NameOfPublisher") 

は、詳細はドキュメントを参照してください:http://docs.particular.net/nservicebus/azure-storage-persistence/configuration

関連する問題