none
Azure Service Bus Queueが突然使えなくなりました RRS feed

  • 質問

  • 従来稼働していたService Bus Queueのプログラムが突然エラーを発生するようになりました。

    --------------------------------------
    型 'System.UnauthorizedAccessException' のハンドルされていない例外が Microsoft.ServiceBus.dll で発生しました

    追加情報:リモート サーバーがエラーを返しました: (401) 許可されていません claim is empty. TrackingId:f1ae8661-2b46-433e-9621-c7b91c5927e3_G7, SystemTracker:digipub.servicebus.windows.net:DigipubOrder_Session, Timestamp:7/20/2016 2:18:55 AM
    --------------------------------------

    調べたところ、エラーの発生場所は、以下の"namespaceManager.QueueExists(queueName)"であり、権限がないとのメッセージのようです。Azure管理ポータルでConnectionStringを確認しましたが、間違いありません。

    ○ConnectionStringの有効期限があるのでしょうか。

    ○その場合には、どのように更新すればよいのでしょうか。

    ○あるいはService Bus Queueサービス自体のバージョンアップが影響している可能性もあると思います。その場合には、どのように対処すべきかお教えください。

    ○また、このような稼働中のプログラム自体に直接影響を与えるような「破壊的」バージョンアップが行われる場合、どこに事前告知が行われるのでしょうか。

    --------------------------------------

    (PowerShell用ライブラリのC#ソース)

            public QueueClient InitializeParamWithSession(string connectionString, string queueName, bool useSession, bool? deleteAfterReceipt)
            {
                QueueDescription queueDescription = new QueueDescription(queueName)
                {
                    RequiresSession = useSession
                };

                var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

                if (!namespaceManager.QueueExists(queueName))
                {
                    namespaceManager.CreateQueue(queueDescription);
                }
                var GQueueClient = CreateQueueClient(connectionString, queueName, deleteAfterReceipt);
                return GQueueClient;
            }

            public QueueClient CreateQueueClient(string connectionString,string queueName, bool? deleteAfterReceipt)
            {
                ReceiveMode receiveMode;
                if (deleteAfterReceipt != null)
                {
                    if (deleteAfterReceipt == true)
                    {
                        receiveMode = ReceiveMode.ReceiveAndDelete;
                    }
                    else
                    {
                        receiveMode = ReceiveMode.PeekLock;
                    }
                    return MessagingFactory.CreateFromConnectionString(connectionString).CreateQueueClient(queueName, receiveMode);

                }
                else
                {
                    return MessagingFactory.CreateFromConnectionString(connectionString).CreateQueueClient(queueName);

                }
            }
    --------------------------------------

    どうぞよろしくお願いいたします。

    2016年7月20日 2:40

回答

  • クラウドの設定が変わったのでしょうか。

    プログラムの稼働が復活いたしました。

    今後は、「破壊的な」バージョンアップがある場合には、十分な時間を設けて、事前に告知してください。

    どうぞよろしくお願いいたします。

    • 回答としてマーク SOhtsu 2016年7月27日 11:19
    2016年7月27日 11:18