Удаление мертвых тем в служебной шине Azure

Я пытался сделать домашнюю работу по этой проблеме, но никакие поиски, которые я не могу сделать, не помогли мне приблизиться к ответу. Ближайшим успехом было Обнаружение и удаление потерянных очередей , Темы или подписки в служебной шине Azure.

Мой сценарий:

У меня работает несколько служб (стандартная служба выигрыша). При запуске эти процессы начинают подписываться на заданную тему в служебной шине Azure. Назовем тему «Сообщения».

Когда сервис закрывается, он красиво отписывается.

Но иногда что-то случается, и служба выходит из строя, что приводит к сбою отмены подписки, и тогда подписка остается зависшей.

Мои вопросы:

1) Судя по тому, что я вижу, каждая подписка на мертвую тему считается при отправке сообщения в эту тему. Даже если его никто и никогда не заберет. Факт или вымысел?

2) Есть ли способ удалить подписки, которые не проверялись какое-то время, например, за последние 24 часа? Желательно скриптом Power Shell?

Я поднял этот вопрос непосредственно в Microsoft, но пока не получил ответа. Конечно, я не могу быть первым, кто это испытает. Я также обновлю это, если получу информацию от третьих лиц.

Спасибо

Йохан


person Johan Karlsson    schedule 21.05.2013    source источник


Ответы (2)


По вашему 1) вопросу, да, сообщения, отправленные в тему, будут отправлены в любую соответствующую подписку, даже если она простаивает (на основе вашей собственной логики). Подписка - это постоянный артефакт, который вы создаете и который открыт для приема сообщений, даже если никакие службы не удаляют сообщения из очереди.

Чтобы очистить подписки, вы, вероятно, можете использовать свойство AccessedAt SubscriptionDescription и использовать его для проверки того, когда кто-то в последний раз читал очередь (с помощью операции приема). http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.subscriptiondescription.accessedat.aspx

Если вы воспользуетесь этой логикой, вы сможете создать свои собственные механизмы «очищения».

HTH

person Sam Vanhoutte    schedule 21.05.2013
comment
Идеально! Я также напишу в блоге об этом, чтобы описать процедуру. Чтобы получить подписки: msdn.microsoft.com/ en-us / library / windowsazure / - person Johan Karlsson; 21.05.2013
comment
И чтобы удалить их, msdn.microsoft.com/ en-us / library / windowsazure / - person Johan Karlsson; 21.05.2013
comment
Для уточнения рассчитывает на первый вопрос. Я имею в виду, что вам засчитывается квота сообщений в месяц. - person Johan Karlsson; 21.05.2013
comment
В самом деле, ›каждое сообщение + действие учитываются при выставлении счетов и данных об использовании. (даже получение, которое не возвращает сообщение ...) - person Sam Vanhoutte; 21.05.2013

В выпуске Azure SDK 2.0 мы рассмотрели этот сценарий с помощью функции AutoDeleteOnIdle. Это позволит вам установить временной интервал для Очереди / Темы / Подписки, и когда в течение указанного времени не будет обнаружено никакой активности, объект будет автоматически удален. Подробную информацию см. здесь, а устанавливаемое свойство - здесь.

person Abhishek Lal    schedule 21.05.2013
comment
В настоящее время я использую silverlight для создания тем и подписок. Я хотел бы воспользоваться этой новой функцией, но у меня проблемы с правильным пространством имен для контракта данных. Чтобы моя текущая настройка работала, я использовал пакет Microsoft.Samples.ServiceBus.Messaging, который ссылается на контракт данных [DataContract (Name = SubscriptionDescription, Namespace = schemas.microsoft.com/netservices/2010/10/servicebus/. У вас есть какие-нибудь указания, где я могу получить новое пространство имен? - person kjsteuer; 29.07.2013
comment
Эти источники устарели, вы можете увидеть последнюю схему XML-документа и версию API для использования из Azure Java SDK: github.com/WindowsAzure/azure-sdk-for -java / blob / master / - person Abhishek Lal; 30.07.2013
comment
Тогда, вероятно, нет обновленного источника для silverlight, верно? Я проверю пакет java sdk. - person kjsteuer; 30.07.2013
comment
AutoDeleteOnIdle не работает, если тема постоянно заполняется в неактивной подписке. - person Patrick Peters; 02.11.2017