我们正在使用网络作业将通知发送给所有用户。 但问题是并非每个人都在同一时间收到通知。 假设我们必须向3000个用户发送通知,那么第一个和最后一个用户之间的时间间隔将超过一个小时。
有没有更好的解决方案,我可以同时向每个人发送通知,就像“ QBot”在团队中的表现一样。
谢谢。
答案 0 :(得分:1)
如果必须一一发送通知,则不可能同时将其发送给所有用户。但是,您可以缩小差距,但这可能不是轻松的任务,具体取决于您拥有的用户数量。
当然,您需要考虑节流。就像@ Nikitha-MSFT在评论中说的那样,一旦达到速率限制,您将开始收到HTTP 429错误。而且您需要正确处理它们并重试失败的通知。
您需要一个可扩展的Web作业。即,您的Web作业可以被触发并同时处理多个批次。例如,将您的webjob更改为触发的消息队列(如果不是),以便它可以处理多个队列消息,每个队列消息同时包含一个或多个通知。
例如,您可能有两个网络作业:
WebJob A -由计时器/ HTTP请求触发,找到所有需要通知的用户并为找到的每个用户创建队列消息
WebJob B -由队列触发,处理消息并发送通知
每个作业主机could process 32 queue messages都是异步的最大值。因此,从理论上讲,每个作业主持人可以同时发送32批通知。
假设您到目前为止还没有达到节流限制,则可以开始考虑增加资源:
横向扩展
每个应用程序服务有一个webjob主机。您可以扩展应用程序服务以拥有多个实例,以获得更多的作业宿主实例。您拥有的实例越多,清除队列中消息的速度就越快,因此发送通知的速度也就越快。
按比例放大
也有可能像post那样遇到应用服务计划的瓶颈。此时,您需要考虑将计划升级到另一层以获得更多功能,例如CPU。