public async Task Publish(IMessage message, string exchange)
        {
            var address = new Address(message.Command, message.Type, exchange);

            if (_subscriptionManager.HasSubscriptionsForAddress(address))
            {
                if (await ProcessMessage(message, address))
                {
                    return;
                }
                else
                {
                    log.LogWarning($"Message NOT processed: '{BitConverter.ToString(message.Raw)}'");
                }
            }
            else
            {
                var transport = _transportManager.GetTransportByName(exchange);
                if (transport is null)
                {
                    log.LogWarning($"{exchange} not exist in TrasnportManager");
                    return;
                }
                await transport.PushDataAsync(message).ConfigureAwait(false);
            }
        }