Как стать автором
Обновить

Комментарии 10

Коду в этой статье бы код-ревью пройти, а потом уже в народ)
У меня есть возможность редактирования статьи. Поэтому, с радостью выслушаю Ваши предложения по ее улучшению.
1) Где-то используете билдер в формате лесенки, где-то вызов каждый метода на каждой строке у экземпляра билдера
2) ttlInSeconds в виде строки? замените на примитив
3) Не проверяете существование файла настроек при создании бина
4) Используете sout
5) Метод с 6ю параметрами заменил бы конфиг-объектом
6) принципы DRY
Благодарю Вас. Постараюсь исправить эти недочеты.
Используете ли очередь (MQ) для отправки уведомлений или они отправляются синхронно по событиям? Недавно задумался над этим вопросом: операция отправки push-уведомления может быть дорогой, нужно отправить сетевой запрос в Firebase, а то и сходить в БД за данными для уведомления. Стоит ли сразу озаботиться настройкой очереди для пушей, чтобы сервер не падал под нагрузкой при большом количестве уведомлений?
Сложности на серверной стороне

  • Понятно, что идентификатор устройства, присылаемый пользователем, мы сохраняем в базу данных;
  • Идентификатор устройства хорошо бы привязывать к пользователю, чтобы отправлять персонализированные сообщения;
  • Стоит помнить, что пользователь у нас один, а устройств у него может быть несколько, также одним устройством могут пользоваться несколько пользователей;
  • Отправка уведомлений пользователям не самая дешевая операция и поэтому событие, инициирующее отправку уведомления, нужно ставить в очередь на отправку;
  • Только маленькие проекты с малым числом получателей могут позволить себе отправлять уведомления по событию, в течении того-же HTTP запроса;
  • Так у нас появляется система очередей на RabbitMQ, Redis и т.д.;
  • Появляются демоны/воркеры которые разбирают очередь и другие инструменты поддержки очередей;
  • Для увеличения скорости отправки можно распараллелить процесс и разнести его на несколько нод.
А как узнать дошло push-уведомление до пользователя?
Никак. Нет никаких гарантий, что ваше уведомление дойдет.
Спасибо за статью, но почему бы в 2к19 вместо геттеров и сеттеров в классе PushNotifyConf не воспользоваться аннотациями Getter и Setter от Lombok (а также @AllArgsConstructor и @NoArgsConstructor)? Тем более при написании статьи, когда так важно не захламлять код
Спасибо за совет. Не подумал, когда писал. Сам просто не пользуюсь Lombok
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории