gpt4 book ai didi

Azure 队列存储 - 在调用 CloudQueue.GetMessages() 后立即将消息标记为可见

转载 作者:行者123 更新时间:2023-12-01 16:23:19 25 4
gpt4 key购买 nike

问题:

我正在从 Azure 存储队列读取消息,然后使用辅助角色将它们插入到存储表中。

我想读取消息,但仅在至少有 100 条消息时才处理它们(这是为了优化正在发生的存储表批量插入)。如果消息少于 100 条,那么我想取消消息处理并使它们立即再次在队列中可见,以供下一次队列读取。

问题:

是否可以将 CloudQueue.GetMessages(...) 刚刚读取的消息标记为可见,而不必等待超时到期?

代码:(在 WorkerRole.cs 中)

public override void Run()
{
while (true)
{
var messages = queue.GetMessages(100);

if (messages.Count() >= 100)
{
// This will process, insert into a table, and delete from the queue
ProcessMessages(messages);
}
else
{
//!!! MARK MESSAGES AS VISIBLE ON THE QUEUE
System.Threading.Thread.Sleep(1000);
}
}
}

谢谢

最佳答案

您可以检查队列的“ApproximateMessageCount”属性(详细信息 here ),这将让您大致了解队列中正在等待的消息数量。

另外:您可以将消息的不可见超时设置为较小的值(也许 5-10 秒?)。过了该时间段后,该消息将再次可见。您还可以在阅读后将不可见超时修改为更短的时间。

请记住,从队列中读取数据算作一次事务,更新消息也算作一次事务(例如更新不可见超时)。

等待 100 条消息可能不是最佳优化。哦,还有 GetMessages()(详细信息 here )仅限于 32 条消息,因此等待 100 条消息是没有意义的。另外:交易非常非常便宜(每 100K 一便士)交易)。我不一定看到这里的值(value)。

关于Azure 队列存储 - 在调用 CloudQueue.GetMessages() 后立即将消息标记为可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15384517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com