2017-07-10 107 views
0

我試圖使用ActiveMQ作爲Microsoft Service Bus。我在activemq上配置了ssl層,並且$ cbs隊列已經由使用azure servicebus SDK的c#應用程序創建。使用ActiveMQ代替Microsoft Service Bus

但是當我試圖用天藍色IotHub SDK下我的設備,我似乎應該通過ActiveMQ的用戶名密碼。如何更改iothubtransport_amqp_common.c以將我的設備連接到ActiveMQ。

我可以通過使用amqpnetlite連接到Azure IoTHub。如果我想連接到activeMQ,我應該通過用戶名和密碼。它工作正常。所以我想知道:在azure iot sdk中,如何傳遞這2個選項(用戶名和密碼)?

+0

沒有足夠的信息來這裏去..你需要分享相關日誌報表和/或源該程序。從您的源程序的名稱看來,它似乎嘗試使用AMQP協議進行連接。看看這個:http://activemq.apache.org/amqp.html –

+0

我沒有** activeMQ **配置的問題。我可以使用[amqpnetlite](https://github.com/Azure/amqpnetlite)連接到** Azure IoTHub **。如果我想連接到** activeMQ **,我應該傳遞_Username_和_Password_。它工作__OK__。所以我想知道:在[azure iot sdk](https://github.com/Azure/azure-iot-sdk-c)我如何傳遞這2個選項(_Username_和_Password_)? –

回答

0

Azure iothub sdk使用MSSBCBS進行sasl機制,但activeMQ使用PLAIN sasl。所以爲了傳遞用戶名和密碼,我們應該使用PLAIN sasl。爲改變SASL機制,你可以編輯這個文件: 蔚IOT-SDK-C/iothub_client/src目錄/ iothubtransport_amqp_connection.c 在49線代替:

if ((sasl_mechanism = saslmechanism_create(saslmssbcbs_get_interface(), NULL)) == NULL) 

地說:

SASL_PLAIN_CONFIG sasl_plain_config; 
      sasl_plain_config.authcid = "username"; 
      sasl_plain_config.authzid = NULL; 
      sasl_plain_config.passwd = "password"; 

if ((sasl_mechanism = saslmechanism_create(saslplain_get_interface(), &sasl_plain_config)) == NULL) 

您還需要添加 的#include「azure_uamqp_c/sasl_plain.h」

相關問題