使用ActiveMQ而不是微软服务总线

时间:2017-07-10 16:56:44

标签: apache azure activemq azure-servicebus-queues azure-iot-hub

我尝试将 ActiveMQ 用作 Microsoft Service Bus 。我在activemq上配置了 ssl layer ,并且使用azure servicebus SDK已经由c#应用程序创建了$ cbs队列。

但是当我尝试为我的设备使用azure IotHub SDK C时,我似乎应该传递 activemq 用户名密码。如何更改iothubtransport_amqp_common.c以将我的设备连接到ActiveMQ。

我可以使用amqpnetlite连接到Azure IoTHub。如果我想连接到activeMQ,我应该传递用户名和密码。它运作正常。所以我想知道:在azure iot sdk中如何通过这两个选项(用户名和密码)?

1 个答案:

答案 0 :(得分: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”