【问题标题】:Azure Queue and function: Does the message send to queue will process the same orderAzure队列和功能:发送到队列的消息是否会处理相同的顺序
【发布时间】:2018-08-30 07:20:39
【问题描述】:

我正在使用 QueueTrigger 处理存储队列和函数,我还将 BatchSize = 1 放在 host.json 中。我确定一次只提供一条消息。 我想知道发送给函数的消息是否按照它们到达队列的顺序。

我有 4 个数据发送到具有时间戳的队列。我看到其中一个没有进入我用作历史记录的存储的 azure 表。 我认为应该将尚未处理的那个发送到队列中。

后来我向队列发送了另一条消息,但这条消息比之前发送的消息得到了处理

【问题讨论】:

  • 标记时请小心。例如,您使用了“table”,它是模棱两可的,甚至包含说明不使用它的描述。我修复了你的标签。

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


【解决方案1】:

没有。 使用 Function 处理队列时没有顺序保证。函数的想法是自动扩展和并行处理。这是一方面。另一方面,使用 Azure 存储队列,没有 FIFO 保证。唯一保证 FIFO 处理的队列是 Azure 服务总线队列与会话一起使用时。但 Azure Functions 不支持会话。 有关Storage Queues and Service Bus Queues comparison is here 的更多信息。 还有missing Session support in Functions here上的信息。

但是,如果您只是将消息存储在存储表中,则可以实现该目标。发送消息时,您必须在消息中添加时间戳。然后将该属性保存到 Storage 中并使其成为 RowKey 的一部分。

【讨论】:

  • 如何通过查询访问函数不同实例中表中的记录?还是使用数据插入通知?
  • 目前我在 host.json 中使用 BatchSize = 1 设置,因此每次只处理一个消息队列。这是否也不能保证订单被处理。
  • 您的队列不保证按顺序送达。当您将批量大小设置为 1 时,它只会告诉您一次处理 1 条消息。但是当队列中有很多消息时,一个函数会有多个实例。这就是无服务器和功能的理念——随着负载“神奇地”自动扩展。
猜你喜欢
  • 2014-01-28
  • 2014-08-30
  • 1970-01-01
  • 2019-01-15
  • 2011-04-09
  • 2020-09-28
  • 2022-12-19
  • 1970-01-01
  • 2019-11-08
相关资源
最近更新 更多