Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }