Использование ActiveMQ вместо служебной шины Microsoft

Я пытался использовать ActiveMQ в качестве служебной шины Microsoft. Я настроил слой ssl в activemq, а также очередь $cbs уже создана приложением C# с использованием SDK azure servicebus.

Но когда я попытался использовать azure IotHub SDK C для своего устройства, кажется, что я должен передать activemq имя пользователя и пароль . Как я могу изменить iothubtransport_amqp_common.c, чтобы подключить мое устройство к ActiveMQ.

Я мог подключиться к Azure IoTHub с помощью amqpnetlite. Если бы я хотел подключиться к activeMQ, я должен был передать имя пользователя и пароль. И работает нормально. поэтому я хочу знать: в azure iot sdk как я могу передать эти 2 параметра (имя пользователя и пароль)?


person Mohammad Eskandari    schedule 10.07.2017    source источник
comment
Здесь недостаточно информации для продолжения... вам нужно поделиться соответствующими операторами журнала и/или исходным кодом программы. Судя по названию исходной программы, она пытается подключиться по протоколу AMQP. Проверьте это: activemq.apache.org/amqp.html   -  person Matt Pavlovich    schedule 11.07.2017
comment
У меня нет проблем с конфигурацией activeMQ. Я мог подключиться к Azure IoTHub с помощью amqpnetlite. Если я хочу подключиться к activeMQ, я должен передать Имя пользователя и Пароль. И это работает хорошо. поэтому я хочу знать: в azure iot sdk, как я могу передать эти 2 варианты(Имя пользователя и Пароль)?   -  person Mohammad Eskandari    schedule 12.07.2017


Ответы (1)


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"

person Mohammad Eskandari    schedule 31.07.2017