public Task DisconnectProducerFromOtherNode(NotifyProducerConnectionDetails notifyProducerConnectionDetails) { var producerExternalToRemove = _producerHubRepository.GetProducerByProducerName(notifyProducerConnectionDetails.Tenant, notifyProducerConnectionDetails.Product, notifyProducerConnectionDetails.Component, notifyProducerConnectionDetails.Topic, notifyProducerConnectionDetails.ProducerName); if (producerExternalToRemove.Value != null) { if (producerExternalToRemove.Key.StartsWith("EXTERNAL")) { _producerHubRepository.RemoveProducer(producerExternalToRemove.Key); } } return(Task.CompletedTask); }
public override Task OnDisconnectedAsync(Exception exception) { string clientConnectionId = Context.ConnectionId; Producer producerToRemove = producerHubRepository.GetProducerById(clientConnectionId); // When the producer with the same name try to connect more than one. if (producerToRemove != null) { storageHubService.DisconnectProducerAsync(producerToRemove); producerHubRepository.RemoveProducer(clientConnectionId); logger.LogInformation($"Producer '{producerToRemove.ProducerName}' at {producerToRemove.Tenant}/{producerToRemove.Product}/{producerToRemove.Component}/{producerToRemove.Topic} is disconnected"); Clients.Caller.ProducerDisconnected(new Model.Producers.Events.ProducerDisconnectedDetails() { Id = producerToRemove.Id }); } return(base.OnDisconnectedAsync(exception)); }