【问题标题】:Does the PopReceipt property guarantee the CloudQueueMessage was successfully added to an Azure Storage Queue?PopReceipt 属性是否保证 CloudQueueMessage 已成功添加到 Azure 存储队列?
【发布时间】:2019-02-01 00:17:55
【问题描述】:

我正在使用 Microsoft.WindowsAzure.Storage.Queue 库通过以下代码将消息从 Azure 函数推送到存储队列:

public void Enqueue(MyMessage myMessage)
{
    string originalPayload = null;
    try
    {
          payload = serializer.Serialize(myMessage);
          var message = new CloudQueueMessage(payload);
          cloudQueue.AddMessage(message);
    }
    catch (Exception ex)
            {
                throw ex;
            }

}

这适用于小批量,但当每 5 分钟处理大约 200 条消息时,几乎一半的消息不会进入队列,即使该函数从未失败并且在所有尝试中都显示为成功。

所以我想在推送消息后添加一个验证步骤,我在想是否只有 PopReceipt 检查可以工作:

if ( string.IsNullOrWhitespace(message.PopReceipt) )
{
    // the message was not added, do something
}

【问题讨论】:

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


【解决方案1】:

是的,您可以执行验证检查以确定消息是否已成功添加到队列中。

在构造 CloudMessage var message = new CloudQueueMessage(payload); 时,除 AsString 和 AsBytes 之外的所有其他属性都将为空。因此,您可以使用“Id”或“PopReceipt”等属性,当消息成功添加到队列时填充这些属性来执行验证。

还请确保您的 azure 函数是否每 5 分钟触发 200 次,如果消息到达时未触发您的函数,则问题出在 azure 函数上。

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 2022-04-29
    • 2020-10-15
    • 1970-01-01
    • 2015-12-13
    • 2021-06-13
    • 2013-10-31
    • 2019-07-29
    • 2011-12-20
    相关资源
    最近更新 更多