Azure служебная шина с Azure функциями, использующими сеансы (Node.js) - PullRequest
0 голосов
/ 08 мая 2020

При интеграции Azure сеансов служебной шины с Azure функциями в Javascript / Typescript: я использую https://www.npmjs.com/package/@azure / служебную шину Мой сценарий:

  1. Azure Функция X помещает сообщение с сеансом «123» в очередь Azure служебной шины.
  2. Azure Функция Y имеет триггер в Azure очереди служебной шины, ожидающей новых сообщений в очереди и обрабатывать сообщения согласно sessionId "123".

Мой код:

//SENDER FUNCTION CODE

const sbClient = ServiceBusClient.createFromConnectionString(process.env.AZURE_SERVICE_BUS_CONNECTION_STRING);
const queueClient = sbClient.createQueueClient("testqueue");
const sender = await queueClient.createSender();

await sender.send({
  body: req.body.message.text + " - " + new Date().toLocaleTimeString(),
  sessionId: "123"
});


//CONSUMER FUNCTION CODE

const sbClient = ServiceBusClient.createFromConnectionString(process.env.AZURE_SERVICE_BUS_CONNECTION_STRING);
const queueClient = sbClient.createQueueClient("testqueue")
const receiver = await queueClient.createReceiver(ReceiveMode.peekLock, {
  sessionId: "123"
});
const messages = await receiver.receiveMessages(10);

Я получил следующую ошибку:

System.Private.CoreLib: Exception while executing function: Functions.TestQueueReceiver. System.Private.CoreLib: Result: Failure
Exception: SessionCannotBeLockedError: **Received sessionId 'undefined' does not match the provided sessionId '123'** while creating the receiver '<QUEUENAME-123456789>'.
Stack: SessionCannotBeLockedError: Received sessionId 'undefined' does not match the provided sessionId '123' while creating the receiver '<QUEUENAME-123456789>'.
    at Object.translate (PATH\node_modules\@azure\amqp-common\dist\index.js:908:17)
    at MessageSession.<anonymous> (PATH\node_modules\@azure\service-bus\dist\index.js:3163:52)
    at Generator.next (<anonymous>)
    at fulfilled (PATH\node_modules\tslib\tslib.js:110:62)
    at process._tickCallback (internal/process/next_tick.js:68:7).

Я уверен, что отправитель AF поместил sessionId при отправке сообщения, но кажется, что sessionId поступает в потребитель Azure Функция, хотя и исследует context.bindingData, я вижу, она ценится.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...