Приложения-функции Azure - невозможно извлечь из очереди недоставленных сообщений (DLQ) - PullRequest
0 голосов
/ 22 февраля 2019

Я слежу за nodejs примерами здесь , чтобы получить сообщения, отправленные в очередь недоставленных сообщений.Я вставлял в Q пустые буквы следующим образом:

await brokeredMessage.deadLetter({
      deadletterReason: 'bad',
      deadLetterErrorDescription: 'too bad, so sad.',
    });

Я вижу, что в Azure число мертвых букв 2 .Независимо от того, пришли ли они из-за кода, указанного выше, или из-за какого-то другого сбоя, сообщения были буквально забиты, у меня 2 в DLQ.Однако Я не могу получить их с помощью:

  const client = ns.createQueueClient(queueName);
  const receiver = client.getReceiver();
  const sender = client.getSender();
  const messages = await receiver.receiveBatch(100);

  if (messages.length > 0) {
    for (let i = 0; i < messages.length; i += 1) { ... }
  } else {
    // I ALWAYS GET HERE. 
  }

Что я делаю не так?Там нет ошибок.Почему я не могу прочитать DLQ и получить там 2 предмета?Меняется ли имя очереди, как это происходит для вредоносных сообщений?Я использую одно и то же имя очереди при отправке, рассылке и пытаюсь прочитать DLQ.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Попробуйте использовать

const client = ns.CreateQueueClient(QueueClient.FormatDeadLetterPath(queueName));

, так как все ваши сообщения находятся в очереди недоставленных сообщений, вы можете получать сообщения из пути недоставленных сообщений, создав приемник сообщений для конца тупой буквыочередь

0 голосов
/ 23 февраля 2019

Я считаю, что вам нужно добавить /$DeadLetterQueue к имени вашей очереди.Итак, const deadLetterQueueName = queueName + "/$DeadLetterQueue";

См. этот выпуск GitHub здесь, на репозитории Azure-SDK-для-узла.

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