2016-03-01 3 views
1

Имеет некоторые проблемы с обработкой сообщений, созданных в концентраторе Azure IoT.Процессор сообщений концентратора IOT

Получение следующей EROR: Исключение брошено: 'Microsoft.ServiceBus.Messaging.Amqp.AmqpException' в Microsoft.ServiceBus.dll ("Произошла ошибка AMQP (состояние = 'AMQP: Ссылка: перенаправлять').")

Может ли кто-нибудь указать мне в правильном направлении?

С уважением, Jonas

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Microsoft.ServiceBus.Messaging; 

namespace IOTHubMessageProcessor 
{ 
    class Program 
    { 
     static string connectionString = "HostName=yaddaaaa.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=keydataasdss+tacsCxwkWQeUm9sMCc2GHnQkIZHM="; 
     static string iotHubD2cEndpoint = "messages/events"; 
     static EventHubClient eventHubClient; 
     static void Main(string[] args) 
     { 

      Console.WriteLine("Receive messages\n"); 
      eventHubClient = EventHubClient.CreateFromConnectionString(connectionString, iotHubD2cEndpoint); 

      var d2cPartitions = eventHubClient.GetRuntimeInformation().PartitionIds; 

      foreach (string partition in d2cPartitions) 
      { 
       ReceiveMessagesFromDeviceAsync(partition); 
      } 
      Console.ReadLine(); 
     } 


     private async static Task ReceiveMessagesFromDeviceAsync(string partition) 
     { 
      var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow); 

      while (true) 
      { 
       EventData eventData = await eventHubReceiver.ReceiveAsync(); 
       if (eventData == null) continue; 

       string data = Encoding.UTF8.GetString(eventData.GetBytes()); 
       Console.WriteLine(string.Format("Message received. Partition: {0} Data: '{1}'", partition, data)); 
      } 
     } 
    } 
} 
+1

Разве вы не используете конечную точку, совместимую с Event Hub, для использования EventHubClient? – juunas

+0

Привет, у вас все еще есть эта проблема? – neolursa

ответ

0

Я не столкнуться с этой проблемой при тестировании с помощью кода, так что это может быть связано с чем-то другим. Я нахожу дублированный поток Azure IoT hub basic receiving example, AMQP error, он предлагает проверить настройки порта порта или прокси, вы можете попробовать.

0

Код выглядит хорошо для меня. Шахта идентична и хорошо работает.

Ваш лучший выбор - создать новый концентратор IoT в Azure и заменить строки.

0

При построении соединительной строки вы можете попробовать «Конечная точка =» вместо «HostName =» в строке 12?

Надеюсь, это поможет!

Mert

0

Пара комментариев:

  1. Пожалуйста, убедитесь, что вы используете последнюю версию библиотеки DLL Service Bus. т. е. 3.1.7 (на сегодняшний день).
  2. Пожалуйста, не смешивайте вызовы асинхронного и синхронного вызовов в коде.

Сообщите нам, если вы все еще сталкиваетесь с этой проблемой.

0

Иногда я вижу, что прокси фильтрует пакеты amqp. Изменение типа транспорта на http, вероятно, решит проблему. Теперь у меня нет доступа к Visual Studio, но я, похоже, помню, что можно настроить транспорт под свойствами клиента. Если вы попробуете, вы можете легко найти, есть ли проблема в прокси-сервере или в программе.

Смежные вопросы