Отправка телеметрии AMQP в концентратор событий Azure без использования шифрования TLS

Можно ли отправлять пакеты/телеметрию AMQP в концентратор событий Azure, не используя шифрование TLS?

Причина, по которой я хочу это сделать, состоит в том, чтобы точно увидеть, как выглядит незашифрованный пакет AMQP.

Я попробовал следующий код (см. amqpTransSetting.UseSslStreamSecurity = false), но он по-прежнему шифрует связь.

        var amqpTransSetting = new AmqpTransportSettings();
        amqpTransSetting.UseSslStreamSecurity = false;

        var cs = @"Endpoint=sb://companyname-ns.servicebus.windows.net/;SharedAccessKeyName=EventHubPublisher;SharedAccessKey=84EHa5NNllnZBzH5ksogvNfhMWtIokdTdjxXXXXXXX=";

        var builder = new ServiceBusConnectionStringBuilder(cs)
                    {
                        TransportType = TransportType.Amqp,
                    };

        var client = EventHubClient.CreateFromConnectionString(builder.ToString(), "companyname-eh");

        int sentCount = sendCount;
        string infoText;

        for (int i = 0; i < sendCount; i++)
        {
            try
            {
                if (MessageType.Text == "Fake Sensor")
                {
                    infoText = "Sent using AMQP protocol";
                }
                else
                {
                    infoText = "Sent using AMQP protocol";
                }

                Random rnd = new Random();
                int intTemp = rnd.Next(15, 25);
                int intHum = rnd.Next(50, 80);

                var e = new Event
                {
                    MessageType = MessageType.Text,
                    Temp = intTemp,
                    Humidity = intHum,
                    Location = Location.Text,
                    Room = Room.Text,
                    Info = infoText
                };

                var serializedString = JsonConvert.SerializeObject(e);
                var data = new EventData(Encoding.UTF8.GetBytes(serializedString))
                {
                    PartitionKey = rnd.Next(6).ToString()
                };

                // Set user properties if needed
                data.Properties.Add("Type", "Telemetry_" + DateTime.Now.ToLongTimeString());



                await client.SendAsync(data).ConfigureAwait(false);
            }
            catch (Exception exp)
            {
                Console.WriteLine("Error on send: " + exp.Message);
                sentCount--;
            }

person Remixed123    schedule 16.04.2015    source источник
comment
Я бы предложил задать новый вопрос о том, чего вы хотите достичь (или пересмотреть этот). Судя по комментариям ниже, вы можете быть довольны интерфейсом HTTP (не то чтобы я когда-либо его использовал). Если вы ожидаете большое количество встроенных устройств, но не особенно большой объем от любого отдельного устройства (т. е. несколько в секунду на устройство в порядке), оно должно быть легче по весу И существует ограничение на количество соединений AMQP на концентратор.   -  person cacsar    schedule 17.04.2015


Ответы (1)


Соединение SSL/TLS является обязательным для доступа ко всем объектам в служебной шине (очередям, темам/подпискам и концентраторам событий). Без него нельзя подключиться.

Паоло.

person ppatierno    schedule 16.04.2015
comment
Спасибо, Паоло. Я начал понимать, что дело обстоит именно так... но мне действительно нужно увидеть, как выглядит необработанный пакет телеметрии AMQP. Поскольку мне нужно вручную создать один поверх AMQP, чтобы затем я мог отправить с помощью небольшого встроенного устройства без необходимости использовать большую библиотеку, для которой на устройстве нет места. Любые предложения о том, как я могу это сделать? Является ли чтение спецификации единственным способом продвижения вперед? Это большие затраты времени, которых я пытаюсь избежать :-( - person Remixed123; 16.04.2015
comment
Я имел в виду создать пакет AMQP поверх TCP - person Remixed123; 16.04.2015
comment
Протокол AMQP довольно сложен, и единственный способ — использовать библиотеку или написать новую, читающую спецификацию AMQP 1.0. Конечно, есть более легкий протокол, такой как MQTT, и связанные с ним библиотеки легче, чем библиотеки AMQP. Однако MQTT изначально не поддерживается в служебной шине (но вы можете дождаться выхода Azure IoT Suite после сборки 2015), но вы можете разместить брокера MQTT внутри рабочей роли Azure или виртуальной машины. Помните, что MQTT не поддерживает шаблон запроса/ответа как AMQP (например, корреляцию и replyTo), и вы должны реализовать его поверх MQTT, используя хорошо разработанные темы (это возможно). - person ppatierno; 16.04.2015
comment
Просто вопрос: в вашем примере используется Azure SDK, но вы говорите о встроенных устройствах. Каковы ваши ограничения? - person ppatierno; 16.04.2015
comment
Размер - это ограничение, я не могу использовать библиотеку. В примере показано, как будет выглядеть пакет AMQP, поэтому я могу попытаться создать его вручную поверх TCP. Недавно я общался с командой Event Hub, и они сказали, что не будут поддерживать MQTT. Мне нужна прямая связь с концентратором событий, решение требует высокой производительности и масштабируемости. - person Remixed123; 16.04.2015
comment
Я не требую pub/sub с темами или чем-то подобным. Мне просто нужно отправить телеметрию с помощью AMQP. Это не должно быть слишком сложным, и я надеялся, что мне просто нужно правильно создать данные прикладного уровня поверх TCP. - person Remixed123; 16.04.2015
comment
Конечно, вы можете не использовать полностью реализованную библиотеку, такую ​​​​как Qpid Proton C, но вам необходимо разработать собственную библиотеку, читающую стандарт. Я прочитал все стандарты, и это не так просто реализовать. Впрочем, в софте все возможно :-) удачи! - person ppatierno; 16.04.2015
comment
Спасибо за вашу помощь, Паоло. Я мог бы посмотреть, смогу ли я найти сервер AMQP, чтобы я мог отправлять на него без требования SSL ... таким образом я мог бы выполнить трассировку пакетов без шифрования и посмотреть, как выглядит телеметрия. - person Remixed123; 16.04.2015