【问题标题】:Azure Storage Queue Client does not put message in poison queueAzure 存储队列客户端不会将消息放入毒队列
【发布时间】:2022-01-20 00:51:36
【问题描述】:

这是一个新手问题。

我有一个使用存储队列 (Client.Azure.Storage.Queues) 的计时器触发器

客户端是否会自动将未处理的消息发送到毒队列?此代码模拟错误。如果一切正常,则删除该消息。

        public async Task Run([TimerTrigger("%TimerExpression%")]TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

            QueueMessage[] messages = await _queueClient.ReceiveMessagesAsync(maxMessages: 10, null );

            try
            {
                foreach (QueueMessage message in messages)
                {
                    Console.WriteLine(message.DequeueCount + "-------------------");
                    Console.WriteLine (message.Body)=
                    _queueClient.(message);
                    throw new ApplicationException("HELP");

                       _queueClient.DeleteMessage(message.MessageId, message.PopReceipt);

                }
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message);
            }

        }

我希望消息在 2 次重试后不会返回到队列中:

{
  "version": "2.0",
  "logging": {
    "applicationInsights": {
      "samplingSettings": {
        "isEnabled": true,
        "excludedTypes": "Request"
      }
    }
  },
  "extensions": {
    "queues": {
      "retry": {
        "strategy": "fixedDelay",
        "maxRetryCount": 2,
        "delayInterval": "00:00:03"
      }
    }
  }
}

或者我错过了什么?还是我必须手动将消息添加到有害队列?

问候 斯蒂芬

【问题讨论】:

    标签: azure azure-functions azure-storage-queues


    【解决方案1】:

    客户端是否会自动将未处理的消息发送到中毒队列?

    不,它没有。

    但是,Azure Functions 队列触发器。如果您从队列中触发函数而不是计时器,那么您最终会收到有毒队列消息。

    如果您直接使用存储客户端而不触发队列,那么您需要自己处理毒队列。

    【讨论】:

      猜你喜欢
      • 2014-01-28
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-08
      • 1970-01-01
      相关资源
      最近更新 更多