使用 ActiveMQ 代替微软服务总线

Using ActiveMQ instead of microsoft service bus

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

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

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

Azure iothub sdk 使用 MSSBCBS 作为 sasl 机制,但 activeMQ 使用 PLAIN sasl。所以为了传递用户名和密码,我们应该使用 PLAIN sasl。要更改 sasl 机制,您可以编辑此文件: azure-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"