【发布时间】:2022-06-11 10:25:13
【问题描述】:
我有一个启用会话的服务队列。 我想每 8 小时一次性处理一次共享相同会话 ID 的所有消息,并在聚合来自会话虚拟队列的所有消息并将此消息推送到新服务队列后创建一条新消息。 消息将由新的 Azure 持久函数处理(使用持久函数,因为这是一个长时间运行的过程)。
高级图表
-
Azure 函数如何一次性处理特定会话的所有消息以创建新消息?
-
我想在所有消息处理完成后完成消息。该怎么做?
-
如何从持久化函数中完成消息?
-
如果客户端函数调用编排函数并完成,锁将被释放,消息将对客户端函数的其他实例可见,但当前正在由编排函数处理。如何确保消息在处理状态下对其他客户端功能不可见?
【问题讨论】:
-
不确定您的聚合消息有多大,但 servicebus 对消息 maz 大小有限制。为什么不摄取所有消息,将它们存储在表存储中,并具有将每 8 小时运行一次的计时器触发功能,并按 sessionID 处理所有存储的消息组?
-
@thomas 消息不会很大,聚合消息是键值对的映射。地图最多有 1000 个键值对。我没有使用表存储,因为我不想管理它。第二件事是我希望消息按顺序共享相同的会话 ID。如果我使用表存储,那么我将不得不处理自动缩放。使用启用会话的队列按顺序给我每个会话的消息。
-
表存储是一种托管服务。持久的功能是使用它来进行 orhcestrating 功能。我的观点更多的是使用服务总线按顺序摄取消息,然后每 8 小时存储一次,并具有聚合消息的功能。
-
@Thomas 我有一个疑问。您是说使用单独的表存储进行数据摄取,还是要求将分配给持久功能的表存储中的数据摄取?
-
我在考虑使用专用表来摄取数据,然后您可以稍后处理它们。
标签: azure-functions azure-pipelines azureservicebus azure-servicebus-queues azure-durable-functions