2017-01-13 1 views
0

Azureデータセンターの障害と、ペアになったネームスペースの場合、サービスバスが挿入を処理する方法をシミュレートしています。Azureサービスバス:プライマリネームスペースに到達できない場合のPairedNamespacesの挿入

ms docsはと述べている:主キューに送信に失敗した時に

は、送信者はランダムに選ばれたバックログキュー

に メッセージの送信を開始しかし、私はキュークライアントことに気づきました/ message senderは常にプライマリネームスペースにヒットしようとしており、セカンダリネームスペースに切り替わることはありません。

private MessagingFactory GetFactory(bool isReceiver = false) 
    { 
     var primaryConnectionString = PrimaryConnectionString(); 

     var secondaryConnectionString = SecondaryConnectionString();      

     var primaryFactory = 
      MessagingFactory.CreateFromConnectionString(primaryConnectionString); 

     var secondaryMessagingFactory = MessagingFactory.CreateFromConnectionString(secondaryConnectionString); 
     var secondaryNamespaceManager = NamespaceManager.CreateFromConnectionString(secondaryConnectionString); 

     var sendAvailabilityOptions = new SendAvailabilityPairedNamespaceOptions(secondaryNamespaceManager, 
      secondaryMessagingFactory, 1, TimeSpan.FromSeconds(5), isReceiver); 
     primaryFactory.PairNamespaceAsync(sendAvailabilityOptions).Wait(); 

     return primaryFactory; 
    } 

とテストメッセージ送信のための:

  var factory = GetFactory(); 

      var messageSender = factory.CreateMessageSender(_queueName); 

      var msg = new BrokeredMessage(partition) 
      { 
       PartitionKey = partition, 
       SessionId = partition 

      }; 
      messageSender.Send(msg); 

を、私はそれをテストしてるの方法は、hostsファイル内のプライマリ名前空間URLにダミーのIPを関連付けることです。送信はタイムアウト例外(すべての後続の要求の場合)で失敗します。

私の送信者がセカンダリ名前空間に接触しようとしないので、pingタスクが切り替えることを選択していないと思います。問題はどこにありますか?

セカンダリ名前空間のバックアップキューが正しく作成されていることを説明してください。

答えて

3

PairedNamespaces機能は、わかりやすく使いやすい方法ではありません。メッセージを送信してプライマリネームスペースがダウンすると、クライアントは試み、最終的にMessagingCommunicationExceptionを投げます。フェールオーバーが発生することを示すために指定された例外であることを望みますが、それは単に標準のメッセージング例外が一時的なものとしてマークされています。 再度そのメッセージを再試行すると、セカンダリ名前空間を介して送信されます。

私はblog postを持っていますが、詳細/コードがあります。

関連する問題