C # в качестве отправителя и Python в качестве получателя в концентраторе событий Azure - PullRequest
0 голосов
/ 22 октября 2019

У меня есть устройство IoT, подключенное к концентратору событий Azure. Я пытаюсь заставить это устройство взаимодействовать с лазурными блоками данных, а концентратор событий Azure находится между ними в качестве промежуточного программного обеспечения. Проблема в том, что после того, как мы можем отправлять сообщения через «.NET Framework», он никогда не отображается в сообщениях, полученных в командной строке «python» (мы должны делать это, поскольку работаем отдельно для каждой части)

Я следовал рекомендациям .NET framework как отправитель и python как получатель , и это не работает.

Я вижу, что на графиках запросов и сообщений в экземплярах потокового концентратора событий есть пики, но он просто не отображается в получателе

================================== UPDATE ==================================

Просто удалил концентратор событий и воссоздал, и, кажется, работает.

Однако сообщения принимаются в виде длинных строк, как показано ниже:

Received: 662a2a44-4414-4cb5-a9e9-a08d12a417e0
Received: b68ef8f8-305f-4726-84e4-f35b76de30c5
Received: e94dfb73-972c-47b4-baef-1ab41b06be28
Received: 8eda384d-f79d-4cdf-9db3-fe5c2156553b
Received: d154283f-a8c2-4a4c-a7d5-e8d8129b568d
Received: 3e3e190e-f883-416c-a5be-b8cd8547d152
Received: e218c63b-85b3-4f4f-8f04-cb5ffc6d8921
Received: 0adec5ad-e351-4151-ba56-01093e0f383d
Received 8 messages in 0.05406975746154785 seconds

Это происходит, когда я читаю сообщения в следующем формате:

print("Received: {}".format(event_data.body_as_str(encoding='UTF-8')))

1 Ответ

1 голос
/ 22 октября 2019

Я просто попробую и могу повторить вашу проблему. И вот что вам нужно проверить.

1.В отправителе (на c #) вы должны убедиться, что ваше сообщение отправлено правильно. Как показано ниже:

    static void SendingRandomMessages()
    {
        var eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, eventHubName);
        int i = 0;
        while (true)
        {
            try
            {
                // make sure the message is correct.
                var message = i+":"+Guid.NewGuid().ToString()+":"+DateTime.Now;

                Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, message);
                var myeventdata = new EventData(Encoding.UTF8.GetBytes(message));
                eventHubClient.Send(myeventdata);
                i++;
                //eventHubClient.Send(new EventData(Encoding.UTF8.GetBytes(message)));
            }
            catch (Exception exception)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("{0} > Exception: {1}", DateTime.Now, exception.Message);
                Console.ResetColor();
            }

            Thread.Sleep(2000);
        }
    }

2. Кажется, что некоторая задержка для получателя (в python), поэтому я выполняю приемник python примерно 3 раза, и я вижу ожидаемый результат. Снимок экрана, приведенный ниже:

enter image description here

Обновление 1022: , как мы уже обсуждали в комментарии, существует решение для исправления только полученияданные события четного / нечетного числа.

В отправителе (в c #) используйте приведенный ниже код, который отправляет данные события в раздел 0:

        static void SendingRandomMessages()
        {
            var eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, eventHubName);
            var myclient = eventHubClient.CreatePartitionedSender("0");
            int i = 30;

            while (true)
            {
                var message = i + ":" + Guid.NewGuid().ToString() + ":" + DateTime.Now;

                Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, message);
                var myeventdata = new EventData(Encoding.UTF8.GetBytes(message));
                myclient.Send(myeventdata);
                i++;
                Thread.Sleep(2000);
            }
          }

, а затем в приемник (в python). ), укажите для раздела значение 0 (используйте PARTITION = "0"), затем вы сможете получить все данные о событии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...