как остановить прослушиватель azure servicebus при смене подписки topi c - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в служебной шине Azure и теперь застреваю при попытке закрыть прослушиватель подписки.

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

Я закрываю подписку следующим образом:

public void SetData(SessionData data)
{
    // set the session data
    SessionData = data;

    if (_handler != null)
    {
        _handler.CloseConnection();
    }

    // make sure handler is clear before setting a new one
    _handler = null;

    // convert subscription emum to string
    string subscriptionName = Enum.GetName(typeof(Subscriptions), SessionData.subscription);

    // assign handler
    _handler = new ServiceBusTopicHandler(SessionData.connectionString, SessionData.topic, subscriptionName, ProcessMessagesAsync);
}
public async void CloseConnection()
{
  await subscriptionClient.CloseAsync();
  await topicClient.CloseAsync();
}
public class SessionData
{
    public string connectionString { get; set; }
    public string topic { get; set; } = "chat";
    public Subscriptions subscription { get; set; } = Subscriptions.ChannelOne;
    public string sessionCode { get; set; }
}
...