Как узнать, что клиент подключен Eventhub

Я не знаю, как судить, что клиент подключен. Если EVENTHUB_CONNECTION_STRING абсолютно неверен, возникает исключение. Но что, если ключ неправильный? Если не будет генерировать исключение. Как я мог судить, клиент успешно подключен.

Мой код ниже.

var EventHubClient = require('azure-event-hubs').EventHubClient; 

const connectionString = "EVENTHUB_CONNECTION_STRING";
const entityPath = "EVENTHUB_NAME";
const connStr = process.env[connectionString] || "";
const path = process.env[entityPath] || "";

var client = EventHubClient.createFromConnectionString(connStr, path);

 const eventData = {
            body: {
                test1: aaa,
                test2: bbb
            }
        };
await client.send(eventData);

person Jeff_hu    schedule 04.06.2019    source источник


Ответы (1)


createFromConnectionString(connStr, path) возвращает промис, вы должны либо дождаться его, либо зарегистрировать обратный вызов, когда он разрешается с соединением или с ошибкой. Также для отправки данных вам также нужен идентификатор раздела, который можно получить с помощью eventHubClient.getPartitionIds()

var EventHubClient = require('azure-event-hubs').EventHubClient; 

const connectionString = "EVENTHUB_CONNECTION_STRING"; 
const entityPath = "EVENTHUB_NAME"; 
const connStr = process.env[connectionString] || ""; 
const path = process.env[entityPath] || "";

  var client;
  EventHubClient.createFromConnectionString(connStr, path).then((connection) => {
    client = connection;
    ( async function () {
      const pids = client.getPartitionIds();
      const eventData = {
        body: {
          test1: aaa,
          test2: bbb
        }
      };
      pids.forEach((id) => {
        client.send(eventData, id).then((success) => {
          console.log(success);
        }, (error) => {
          console.log(error);

        });

      });
    }())
  }, (connectionError) => {
    console.log(connectionError);
  });
person v1shva    schedule 04.06.2019
comment
Если либо client.getPartitionIds(), либо client.send() не работают, мы можем судить, что соединение имеет ошибку. Правильно ли я понимаю? Можно ли судить об этом перед использованием? Есть ли способ, как client.isConnected = true ?? или что-то? - person Jeff_hu; 04.06.2019
comment
Извиняюсь. Я новичок в Nodejs. Я попробовал код, который вы разместили. он выдает исключение. Так разве это не возвращает обещание? Ошибка EventHubClient.createFromConnectionString(...).then не является функцией. - person Jeff_hu; 05.06.2019
comment
Я обновил ответ, включив в него импорт библиотеки Azure. Обратите внимание, что для создания клиента вам потребуется ключ Azure IoT hub, полученный из концентратора событий. Также в случае сбоя соединения будет выполнен обратный вызов ошибки для метода EventHubClient.createFromConnectionString(connStr, path). поэтому вы можете проверить, есть ли ошибка соединения, прежде чем выполнять что-либо еще - person v1shva; 05.06.2019
comment
Спасибо. Но это бесполезно. Я не думаю, что createFromConnectionString возвращает обещание. - person Jeff_hu; 05.06.2019