Pull to refresh

Comments 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
Sign up to leave a comment.

Articles