0

Я использую Twilio до send/receive texts in a Rails 4.2 приложения. Я отправляю навалом, около 1000 за раз, и получаю спорадически.Если данные, используемые ActiveJob (resque), сохраняются или помещаются в объект ruby ​​и передаются идентификатором объекта?

В настоящее время, когда я получаю текст, я сохраняю его в БД (в, из, в тело), ​​а затем передаю эту запись сотруднику ActiveJob для обработки позже. Для отправки сообщений я в настоящее время сохраняю параметры Twilio в другой БД и передаю эту запись другому работнику ActiveJob. Поскольку я часто делаю это партиями, у меня есть два рабочих. Первый отправитель сообщения отправляет одно сообщение. Вторая запрашивает БД и находит всех пользователей, которые должны получать сообщение, создает запись БД для каждого отправляемого сообщения, а затем передает эту запись первому сотруднику исходящих сообщений. Таким образом, второй в основном просто создает кучу заданий для первого процесса.

Сейчас у меня есть рабочие, уничтожающие записи после завершения обработки (как входящих, так и исходящих). Я беспокоюсь о том, что не сохраняются вещи, когда сервер, redis или resque спускаются, но я не знаю, действительно ли это хороший шаблон дизайна. Мне было предложено использовать ванильный рубиновый объект и передать его id работнику, но я не уверен, как это влияет на надежность данных. Так ли это над убийством, чтобы создавать все эти БД, и я должен просто создавать ванильные рубиновые объекты и передавать идентификаторы этого объекта рабочим?

Любое понимание ценится,

Дрю

ответ

4

Мне кажется, что подход отправки минимальное количество данных заданий является лучшим подходом. Проверьте раздел «Best Practices» на sidekiq вики: https://github.com/mperham/sidekiq/wiki/Best-Practices

Что делать, если ваша очередь поддерживает и что изменения котировка объекта в то же время? Не сохраняйте состояние в Sidekiq, сохраняйте простые идентификаторы. Посмотрите объекты, как только они вам понадобятся в вашем методе выполнения.

Также с точки зрения надежности - вы должны быть обеспокоены о вашей очереди заданий спускаясь. Бывает. Вы либо проектируете свою систему как отказоустойчивую к сбою, либо находите систему очереди заданий, которая имеет более высокие гарантии надежности (но даже тогда никакая система очередей не может гарантировать 100% -ную доставку сообщений). Sidekiq pro имеет лучшие гарантии надежности, чем sidekiq (non-pro), но если вы разрабатываете свои задания с немного предусмотрительностью, вы можете создавать задания, которые могут сканировать вашу базу данных после сбоя и переупорядочивать любые задания, которые могли быть потеряны ,

Сколько работы, которую вы тратите на создание отказоустойчивых решений, действительно зависит от того, насколько важно, чтобы ваша информация делала ее от точки A до точки B :)

Смежные вопросы