Как использовать тематические сеансы служебной шины в azure functionapp с помощью javascript

У меня есть приложение Azure Functionapp, которое обрабатывает некоторые данные и отправляет эти данные в раздел служебной шины Azure.

Мне нужно, чтобы сеансы были включены в моей подписке на тему служебной шины. Кажется, я не могу найти способ установить идентификатор сеанса при использовании API-интерфейса javascript functionapp.

Вот измененная выдержка из моего функционального приложения:

module.exports = function (context, streamInput) {
  context.bindings.outputSbMsg = [];
  context.bindings.logMessage = [];

  function push(response) {
      let message = {
          body: CrowdSourceDatum.encode(response).finish()
          , customProperties: {
              protoType: manifest.Type
              , version: manifest.Version
              , id: functionId
              , rootType: manifest.RootType
        }
        , brokerProperties: {
            SessionId: "1"
        }
    context.bindings.outputSbMsg.push(message);
  }

  .......... some magic happens here.

  push(crowdSourceDatum);
  context.done();
} 

Но sessionId, похоже, вообще не устанавливается. Любая идея о том, как это возможно включить?

ошибка недоставленного письма

свойства сообщения


person tensai    schedule 15.05.2017    source источник


Ответы (1)


Я протестировал sessionid в своей функции, я могу установить свойство идентификатора сеанса сообщения и просмотреть его в проводнике служебной шины. Вот мой пример кода.

var connectionString = 'servicebus_connectionstring';
var serviceBusService = azure.createServiceBusService(connectionString);

var message = {
    body: '',
    customProperties:
    {
        messagenumber: 0
    },
    brokerProperties:
    {
        SessionId: "1"
    }
};

message.body= 'This is Message #101';
serviceBusService.sendTopicMessage('testtopic', message, function(error)
{
    if (error)
    {
        console.log(error);
    }
});

Вот результат теста.

введите здесь описание изображения

Убедитесь, что вы включили порционирование и сеансы при создании темы и подписки.

введите здесь описание изображения

person Amor    schedule 16.05.2017
comment
Это не использует встроенный соединитель для служебной шины, предоставляемый функциональными приложениями, что я и пытался сделать. - person tensai; 16.05.2017
comment
К сожалению, это одно из ограничений использования привязки вывода в узле, поскольку мы теряем некоторую информацию о типе, которая есть в других языках. В настоящее время используйте SDK ServiceBus для узла в качестве временного решения. Для получения дополнительной информации вы можете обратиться к следующему ответу. stackoverflow.com/a/42118163/7597097 - person Amor; 17.05.2017
comment
Спасибо вам за помощь. :-) - person tensai; 17.05.2017