我正在尝试在PHP中实现推送通知系统,该系统需要以最短的延迟发送大量通知,如described here:
我在这个架构中看到的缺点是如何自动扩展Notification Workers。据我所知,没有办法计算拉出队列中的待处理任务,也无法统计活动工作者。你会怎么做?
答案 0 :(得分:0)
有队列统计信息,您可以在其中获取队列https://cloud.google.com/appengine/docs/python/refdocs/google.appengine.api.taskqueue中的任务数。我们用它来监控任务的数量,似乎它可以用于你的目的。
答案 1 :(得分:0)
我解决了这个问题,使用此方法计算通知队列中的待处理任务,然后根据待处理任务的数量添加工作人员:
public static function task_count($queue)
{
$request = new google\appengine\TaskQueueFetchQueueStatsRequest();
$response = new google\appengine\TaskQueueFetchQueueStatsResponse();
$request->addQueueName($queue);
google\appengine\runtime\ApiProxy::makeSyncCall('taskqueue', 'FetchQueueStats', $request, $response);
return $response->getQueueStats(0)->getNumTasks();
}