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

时间:2020-03-28 02:47:25

标签: c# botframework microsoft-teams

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

节流

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

正确的并行度

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

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

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

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

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

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

横向扩展

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

按比例放大

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