我有这些X个工作者角色,它们将使用多个线程处理Azure队列。在这些队列中流动的数据相当简单(对于此Client_ID,我们有操作A,B或C,每个事务一个操作)但是会有很多,每秒超过5000个事务。现在我需要以显示Client_ID的格式聚合这些,43个A类型的事务,20个B的事务和11个C的事务。基本上总结它们。但队列中的GetMessages只能从队列中检索32条消息。
我的问题是 - 我应该继续检索32,直到我说1000,然后通过它们并总结它们?或者在列表,队列或缓存中保存总计?
对于我的方案的最佳聚合器机制,您会建议什么?知道可能有10个工作线程角色,其中5个线程始终从这些队列中获取消息?
答案 0 :(得分:0)
首先,我认为阅读此always popular article及相关Cloud Cover Episode关于在Azure中构建可扩展计数器会很好。
简而言之,每个工作者角色都保持一个线程安全计数器(在您的情况下为每个客户端和消息类型)。线程在处理每条消息时更新这些计数器。然后,后台线程会定期将该值写入底层存储。