在App Engine中自动缩放拉队列

Jav*_*rín 7 google-app-engine push-notification google-tasks-api

我正在尝试在PHP中实现推送通知系统,该系统需要以尽可能短的延迟发送大量通知,如下所述:

推送通知架构

我在这个架构中看到的缺点是如何自动扩展Notification Workers.据我所知,没有办法计算拉出队列中的挂起任务,也无法统计活动工作者.你会怎么做?

Jav*_*rín 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();
    }
Run Code Online (Sandbox Code Playgroud)