Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm GCM/FCM是否需要复杂的发送策略?_Algorithm_Google Cloud Messaging_Message Queue_Firebase Cloud Messaging - Fatal编程技术网

Algorithm GCM/FCM是否需要复杂的发送策略?

Algorithm GCM/FCM是否需要复杂的发送策略?,algorithm,google-cloud-messaging,message-queue,firebase-cloud-messaging,Algorithm,Google Cloud Messaging,Message Queue,Firebase Cloud Messaging,目前,我正在开发一个支持多租户的SaaS,它可以为其用户群启用推送通知。 我正在考虑使用消息队列存储所有推送,并使用单独的服务发送它们。该新服务需要从队列中读取并发送推送通知 我现在的问题是:我需要想出一个复杂的发送策略吗?我知道GCM对每个请求有1000个设备的限制,因此需要考虑这一点。我也迫不及待地等待x推送,因为这可能会延迟前一推送的发送。我的下一个想法是创建一个全局数组,并用队列中的推送来填充它。然后,循环将每隔1秒钟获取该数组并发送推送。这样推送肯定会被发送,我不会超过1000个设备的

目前,我正在开发一个支持多租户的SaaS,它可以为其用户群启用推送通知。 我正在考虑使用消息队列存储所有推送,并使用单独的服务发送它们。该新服务需要从队列中读取并发送推送通知

我现在的问题是:我需要想出一个复杂的发送策略吗?我知道GCM对每个请求有1000个设备的限制,因此需要考虑这一点。我也迫不及待地等待x推送,因为这可能会延迟前一推送的发送。我的下一个想法是创建一个全局数组,并用队列中的推送来填充它。然后,循环将每隔1秒钟获取该数组并发送推送。这样推送肯定会被发送,我不会超过1000个设备的限制

所以。。。虽然这可能有效,但我不确定无限循环是否是最好的方法。我想知道GCM/FCM是否有请求限制?如果不是的话,我就不需要在一开始就聚集推力,我可以放弃循环。我可以简单地为从队列中拉出来的每个推送发出一个请求

关于这个主题的任何启示或对我的原型算法的改进都将是伟大的

我需要想出一个复杂的发送策略吗

不是真的。GCM/FCM非常简单。只需将消息发送到GCM/FCM服务器,它将自己排队,然后根据其行为尽快发送消息

我知道GCM对每个请求有1000个设备的限制,因此需要考虑这一点

我认为你混淆了每个请求1000台设备的限制。1000设备限制是指使用参数时添加到列表中的注册令牌数:

此参数指定接收多播消息的设备注册令牌或ID的列表。它必须包含至少1个,最多1000个注册令牌

这意味着您只能在一个请求中向1000个设备发送具有相同消息负载的消息,然后,如果需要,您可以执行批量请求1000/每个请求

我想知道GCM/FCM是否有请求限制


好吧,没有这样的限制。放弃这个循环。每当您成功向GCM/FCM服务器发送消息时,它将排队并保留消息,直到可以发送为止。

我指的是每条消息的注册令牌限制!但是知道不存在请求限制是很好的。我认为在发送推送时有一些限制来防止DOS,比如轰炸,因此我的强制聚合…@codepusher之前提到过。但那是一种方式,一种方式,回溯到过去,在官方文件中不再提及。所以我想它已经报废了。干杯