Ошибка: открытие Service Client с использованием правильной строки подключения

Я пытаюсь запустить пример примера клиента службы https://github.com/Azure/azure-iot-sdk-java/blob/master/service/iot-service-samples/service-client-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ServiceClientSample.java с правильной строкой подключения, но возвращает ошибку. :

********* Starting ServiceClient sample...
Creating ServiceClient...
Exception in thread "main" java.lang.IllegalArgumentException: The connection string has an invalid value for property.
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.validateFormat(IotHubConnectionStringBuilder.java:196)
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.validate(IotHubConnectionStringBuilder.java:176)
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.parse(IotHubConnectionStringBuilder.java:132)
        at com.microsoft.azure.sdk.iot.service.IotHubConnectionStringBuilder.createConnectionString(IotHubConnectionStringBuilder.java:42)
        at com.microsoft.azure.sdk.iot.service.ServiceClient.createFromConnectionString(ServiceClient.java:69)
        at com.microsoft.azure.sdk.iot.service.ServiceClient.createFromConnectionString(ServiceClient.java:44)
        at testiothub.Main.openServiceClient(Main.java:104)
        at testiothub.Main.main(Main.java:52)

Я использую:

    private static final String connectionString = "Endpoint=sb://[example_endpoint].servicebus.windows.net/;SharedAccessKeyName=[mySharedAccessName];SharedAccessKey=[SharedAccessKey]";
    private static final String deviceId = "my_device_example";

Где example_endpoint - моя конечная точка, mySharedAccessName - имя моего общего имени доступа, а SharedAccessKey - мой ключ.

Я думаю, что это ошибка, основанная на регулярном выражении Java, расположенном в строке 196: https://github.com/Azure/azure-iot-sdk-java/blob/94930586487573a9f9d43cf10fe6b17ae71c01c3/service/iot-service-client/src/main/java/com/microsoft/azure/sdk/iot/service/IotHubConnectionStringBuilder.java#L196

Моя версия java и пакет SDK для Azure:

openjdk version "1.8.0_265"
OpenJDK Runtime Environment Corretto-8.265.01.1 (build 1.8.0_265-b01)
OpenJDK 64-Bit Server VM Corretto-8.265.01.1 (build 25.265-b01, mixed mode)
        <dependency>
            <groupId>com.microsoft.azure.sdk.iot</groupId>
            <artifactId>iot-service-client</artifactId>
            <version>1.24.0</version>
        </dependency>

Как я могу решить эту проблему?


person Fabio Pereira    schedule 03.10.2020    source источник


Ответы (1)


Показанная ошибка верна. Используемая вами строка подключения - Event Hub-compatible endpoint, которая начинается с sb://, т. Е. Использует служебную шину. Если вы хотите использовать serviceClient, вам необходимо использовать строку подключения iotHub, которую можно найти в IoT hub blade -> Shared access policies -> <select policy name> -> Connection string—primary key

person iAviator    schedule 04.10.2020
comment
Привет спасибо. Задача решена. Я использовал эту ссылку: devblogs.microsoft. com / iotdev /, а я использовал HostName=<Host Name>;DeviceId=<Device Name>;SharedAccessKey=<Device Key> вместо Endpoint=<ENDPOINT>;SharedAccessKeyName=<Key Name>;SharedAccessKey=<KEYVALUE> Pleast note <ENDPOINT>. Большое тебе спасибо - person Fabio Pereira; 04.10.2020
comment
@FabioPereira, можешь ли ты проголосовать, чтобы это помогло и другим? - person iAviator; 04.10.2020