【问题标题】:Azure Function apps - cannot retrieve from Dead Letter Queue (DLQ)Azure 函数应用程序 - 无法从死信队列 (DLQ) 中检索
【发布时间】:2019-02-22 19:20:34
【问题描述】:

我正在按照 nodejs 示例here 检索发送到死信队列的消息。我以这种方式将死信推到 Q:

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

我确实看到 Azure 中的死信计数为 2。无论这些是由于我上面的死信代码还是其他一些事故导致消息被死信,我在 DLQ 中有 2 个。但是我无法检索它们

  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 时使用相同的队列名称。

【问题讨论】:

  • 什么是变量ns?

标签: azure-functions azureservicebus azure-servicebus-queues azure-node-sdk


【解决方案1】:

我认为您需要将/$DeadLetterQueue 附加到您的队列名称中。所以const deadLetterQueueName = queueName + "/$DeadLetterQueue";

在 azure-sdk-for-node 存储库中查看 this GitHub issue

【讨论】:

    【解决方案2】:

    尝试使用

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

    由于您的所有消息都在您的死信队列中,您可以通过为队列的死信端创建消息接收器来接收来自死信路径的消息

    【讨论】:

      猜你喜欢
      • 2013-11-04
      • 1970-01-01
      • 2017-04-15
      • 2020-11-10
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      相关资源
      最近更新 更多