Каков срок действия подписки клиента (т.е. подписчика) на топи c? - PullRequest
0 голосов
/ 12 февраля 2020

Каков срок службы клиентской подписки (т.е. подписчика) на топи c?

Условия

В моей среде разработки я был создание экземпляров SubscriptionClient для различных тем служебной шины.

Я опасаюсь, что для каждого клиента подписки, который я создаю для данного topi c, я мог непреднамеренно дублировать выходящие сообщения (каждый раз, когда я подписываюсь на данную topi c).

Моя теория

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

Так что же происходит, когда одно приложение (из нескольких) теряет подключение к служебной шине на один день, а затем на следующий день - приложение перезапускается и создается новый экземпляр клиента подписки? Будет ли приложение возобновлять получение сообщений, ожидающих доставки, в то время как другие приложения уже обработали эти же сообщения из-за своих собственных подписок?

В заключение, каков срок службы подписки клиента (т. Е. Подписчика) на топи? c?

Приложение

Ссылки:

Автоматически истекшая сиротская подписка (Azure ServiceBus Messaging SubscriptionClient)

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-performance-improvements

https://weblogs.asp.net/sfeldman/asb-subs-with-correlation-filters

1 Ответ

0 голосов
/ 12 февраля 2020

Каков срок службы подписки клиента (т. Е. Подписчика) на топи c?

Немного шире вопроса. Если вы ссылаетесь на клиента, подключающегося к брокеру, при условии, что существует непрерывное основное соединение, клиент будет подключен к подписке. В случае, если вы обращаетесь к логическому подписчику, всякий раз, когда логический подписчик подключается. Который может быть 24/7/365 или случайным. Затем этот срок службы определяется тем, что собирается делать ваша система.

Так что же происходит, когда одно приложение (из нескольких) теряет связь с сервисной шиной на один день, а затем на следующий день - приложение перезапускается и создается новый экземпляр клиента подписки?

Новый экземпляр клиента все еще является экземпляром вашего логического подписчика, верно? Пока это так, вы будете получать события для этого подписчика. Важно отметить, что новый экземпляр клиента должен подключаться к той же подписке, а не пытаться создать новую подписку. Если это произойдет, то у вас точно будут дубликаты.

Будет ли приложение возобновлять получение сообщений, ожидающих доставки, в то время как другие приложения уже обработали те же сообщения из-за своих собственных подписок?

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

Возможно, вы захотите посмотреть шаблон Конкурирующих потребителей . Подписка - это очередь с конкурирующими потребителями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...