2015-04-16 14 views
0

是否可以將未使用TLS加密的AMQP數據包/遙測發送到Azure事件中心?將AMQP遙測發送到未使用TLS加密的Azure事件中心

我想這樣做的原因是要確切瞭解未加密的AMQP數據包的外觀。

我曾嘗試下面的代碼(見amqpTransSetting.UseSslStreamSecurity =假,但它仍然加密通信。

 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--; 
      } 
+0

我建議問你想達到什麼新的問題(或修改這一個)。從CO這聽起來像你可能會很滿意HTTP接口(不是我曾經使用它)。如果您希望有大量的嵌入式設備,但不是來自任何單個設備的特別高的音量(即每個設備每秒幾個很好),它應該是較輕的重量,並且每個集線器的AMQP連接數有限制。 – cacsar

回答

1

SSL/TLS連接是強制性的訪問在服務總線的所有實體(隊列,主題/訂閱和事件集線器)。您無法連接離不開它了。

保羅。

+0

謝謝保羅。我開始看到這種情況......但我真的需要看看原始的AMQP遙測包是什麼樣的。由於我需要在AMQP上手動創建一個,因此我可以使用小型嵌入式設備進行發送,而不需要使用設備沒有空間的大型庫。有關我如何做到這一點的任何建議?正在閱讀規範是唯一的出路嗎?這是我試圖避免的大量投資:-( – Remixed123

+0

我的意思是在TCP之上創建AMQP數據包 – Remixed123

+0

AMQP協議非常複雜,唯一的方法是使用庫或者編寫一個讀取AMQP 1.0規範的新庫。當然,像MQTT這樣的輕協議和相關的庫比AMQP庫要輕一些,但是,MQTT本身不支持Service Bus(但是您可以在Build 2015之後等待Azure IoT Suite),但是您可以託管MQTT代理請記住,MQTT不支持請求/回覆模式作爲AMQP(如correlation和replyTo),並且您必須通過MQTT使用精心設計的主題來實現它(有可能) – ppatierno

相關問題