Многопоточность push-уведомлений GCM

Мы разрабатываем приложение для Android, которое отправляет обновления пользователям нашего приложения. Обновления публикуются на нашем сервере из консоли администратора (приложение JAVA SWING), а затем сохраняются в базе данных. После того, как данные будут успешно вставлены в базу данных, мы хотим отправить одно и то же обновление каждому пользователю приложения через push-уведомление GCM. Поскольку мы хотим построить систему для обслуживания миллионов людей, мы хотели бы использовать многопоточность (может быть, с помощью службы исполнителя) для отправки уведомлений. GCM может быть отправлен на 1000 устройств (давайте назовем это группой) одновременно. Поэтому нам нужно сначала составьте список групп (каждая группа содержит 1000 gcmids). Таким образом, серия задач будет следующей: 1. Вставьте данные в БД 2. Создайте список групп 3. Затем отправьте уведомление каждой группе

Шаг 3 — это то место, где мы планируем использовать многопоточность. Но я хочу вернуться после самого шага 1, чтобы клиент получил ответ (JAVA SWING APP должен быть определенно инициирован относительно того, вставлены ли данные в БД или нет, и он не заинтересован в успехе GCM толчок)

Итак, как мне спроектировать такие вещи, чтобы они возвращались с шага 1, а следующие 2 должны выполняться в основном потоке, а шаг 3 должен быть достигнут с использованием многопоточности.


person user2653234    schedule 13.02.2014    source источник


Ответы (1)


Это можно сделать с помощью фоновой обработки или рабочих процессов.

Существует несколько способов выполнения таких длительных задач в фоновом режиме, чтобы запрошенному клиенту не приходилось ждать.

Некоторыми из инструментов, которые делают такие вещи, являются очереди заданий/работников. Это возможно с Gearman, Redis Resque, Iron MQ (доступно множество очередей сообщений, которые можно использовать в качестве очередей заданий).

person guy_fawkes    schedule 14.02.2014