在同一时间使用Bot框架在MS团队中发送多个主动消息

问题描述 投票:0回答:1

我们正在使用网络作业将通知发送给所有用户。但问题是并非每个人都在同一时间收到通知。假设如果我们必须向3000个用户发送通知,则第一个和最后一个用户之间的时间间隔将超过一个小时。

有没有更好的解决方案,可以像在团队中“ QBot”一样,同时向每个人发送通知。

谢谢。

c# botframework microsoft-teams
1个回答
1
投票

如果必须一一发送通知,则不可能同时将其发送给所有用户。但是,您可以缩小差距,但这可能不是轻松的任务,具体取决于您拥有的用户数量。

节流

当然,您需要考虑节流。就像@ Nikitha-MSFT在评论中说的那样,一旦达到速率限制,您将开始收到HTTP 429错误。并且您需要正确处理它们并重试失败的通知。

正确的并行度

您需要可扩展的Web作业。也就是说,您的Web作业可以被触发并同时处理多个批次。例如,将您的webjob更改为触发的消息队列(如果不是),以便它可以处理多个队列消息,每个队列消息同时包含一个或多个通知。

例如,您可能有两个网络作业:

WebJob A-由计时器/ HTTP请求触发,找到所有需要通知的用户并为找到的每个用户创建队列消息

WebJob B-由队列,处理消息和发送通知触发

每个作业主机could process 32 queue messages作为异步最大值。因此,从理论上讲,每个作业主持人可以同时发送32批通知。

假设您到目前为止仍未达到节流限制,则可以开始考虑增加资源:

向外扩展

每个应用程序服务您有一个webjob主机。您可以扩展应用程序服务以拥有多个实例,以获得更多的作业宿主实例。您拥有的实例越多,清除队列中消息的速度就越快,因此可以更快地发出通知。

放大

[也有可能像post那样遇到应用服务计划的瓶颈。此时,您需要考虑将您的计划升级到另一层以获得更多功能,例如CPU。

© www.soinside.com 2019 - 2024. All rights reserved.