Rails как отсеять фоновую задачу? - PullRequest
0 голосов
/ 17 мая 2018

Отмена - это распространенный способ отложить выполнение функции / задания до истечения определенного времени.

Вариант использования: Разговор с активным чатом от нескольких пользователей, они не должны получать уведомления по электронной почте для каждого набранного сообщения. Но, скорее всего, после нескольких минут молчания, если сообщения не прочитаны, пользователь должен увидеть уведомление.

Фоновые задачи Rails

Активная работа

Не имеет решения

Delayed_Job

Не имеет решения, имеет проблемы: https://github.com/collectiveidea/delayed_job/issues/72

Sidekiq

https://github.com/hummingbird-me/sidekiq-debounce

1 Ответ

0 голосов
/ 18 мая 2018

Что бы я сделал, это запланировал периодическое задание, скажем, каждые 5 минут, который проверяет, есть ли кто-то, кто должен быть уведомлен.Да, это кажется дорогостоящей операцией, но для вашего случая использования я пока не вижу других решений.Допустим, у вас есть 10 пользователей, которые используют чат.Каждые 5 минут вы можете проверять, есть ли пользователи, которые не видели некоторые сообщения, и если это так, вы уведомляете их, только если они неактивны с N минут.

Чтобы запланировать такую ​​задачу, вы можете использовать crono драгоценный камень.Проверьте этот ответ .

Crono позволяет вам делать такие вещи:

Crono.perform(CheckUsersToBeNotifiedJob).every 5.minutes
...