使用 Bot 框架同时在 MS 团队中发送多条主动消息
Sending Multiple Proactive Messages in MS teams, using Bot framework, at the exact same time
我们正在使用网络作业向所有用户发送通知。
但问题是不是每个人都同时收到通知。
假设如果我们必须向 3000 个用户发送通知,那么第一个和最后一个用户之间的时间间隔将超过一个小时。
有没有更好的解决方案,我可以像 "QBot" 在 Teams 中那样同时向所有人发送通知。
谢谢。
如果您必须一个接一个地发送通知,那么不可能同时将它们发送给所有用户。但是,您可以缩小差距,但这可能是也可能不是一件容易的事,具体取决于您拥有的用户数量。
节流
当然,你需要考虑节流。正如@Nikitha-MSFT 在评论中所说,一旦达到速率限制,您就会开始收到 HTTP 429 错误。您需要妥善处理它们并重试失败的通知。
正确的并行度
您需要一个可扩展的 webjob。 也就是说,您的 webjob 可以被触发并同时处理多个批次。例如,将您的 webjob 更改为消息队列触发(如果不是),以便它可以处理多个队列消息,每个队列消息同时包含一个或多个通知。
例如,您可以有两个网络作业:
WebJob A - 由计时器/HTTP 请求触发,找到所有用户需要通知并为每个找到的用户创建队列消息
WebJob B - 由队列触发,处理消息并发送通知
每个作业主机 could process 32 queue messages 作为最大异步。所以理论上,每个作业主机可以同时发送 32 批通知。
假设您还没有达到节流限制,那么您可以开始考虑增加资源:
横向扩展
每个应用服务有一个网络作业主机。您可以扩展您的应用程序服务以拥有多个实例以获得更多作业主机实例。您拥有的实例越多,您清除队列中消息的速度就越快,因此您发送通知的速度也就越快。
扩大规模
您也有可能像这样 post 遇到应用服务计划的瓶颈。此时,您需要考虑将您的计划升级到另一层以获得更多功能,例如CPU.
我们正在使用网络作业向所有用户发送通知。 但问题是不是每个人都同时收到通知。 假设如果我们必须向 3000 个用户发送通知,那么第一个和最后一个用户之间的时间间隔将超过一个小时。
有没有更好的解决方案,我可以像 "QBot" 在 Teams 中那样同时向所有人发送通知。
谢谢。
如果您必须一个接一个地发送通知,那么不可能同时将它们发送给所有用户。但是,您可以缩小差距,但这可能是也可能不是一件容易的事,具体取决于您拥有的用户数量。
节流
当然,你需要考虑节流。正如@Nikitha-MSFT 在评论中所说,一旦达到速率限制,您就会开始收到 HTTP 429 错误。您需要妥善处理它们并重试失败的通知。
正确的并行度
您需要一个可扩展的 webjob。 也就是说,您的 webjob 可以被触发并同时处理多个批次。例如,将您的 webjob 更改为消息队列触发(如果不是),以便它可以处理多个队列消息,每个队列消息同时包含一个或多个通知。
例如,您可以有两个网络作业:
WebJob A - 由计时器/HTTP 请求触发,找到所有用户需要通知并为每个找到的用户创建队列消息
WebJob B - 由队列触发,处理消息并发送通知
每个作业主机 could process 32 queue messages 作为最大异步。所以理论上,每个作业主机可以同时发送 32 批通知。
假设您还没有达到节流限制,那么您可以开始考虑增加资源:
横向扩展
每个应用服务有一个网络作业主机。您可以扩展您的应用程序服务以拥有多个实例以获得更多作业主机实例。您拥有的实例越多,您清除队列中消息的速度就越快,因此您发送通知的速度也就越快。
扩大规模
您也有可能像这样 post 遇到应用服务计划的瓶颈。此时,您需要考虑将您的计划升级到另一层以获得更多功能,例如CPU.