2016-09-17 1 views
2

В моей нынешней архитектуре есть несколько веб-приложений с одной точкой хранения - моя база данных postgres. Теперь я хотел реализовать некоторые задачи, когда в базе данных происходят определенные вещи, такие как отправка электронной почты при создании нового пользователя, уведомление администратора, если определенное значение было изменено и т. Д.Как правильно нас Очередь задач из Postgres Триггеров

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

Я также не думаю, что наличие одного триггера, выполняющего LISTEN/NOTIFY на узловом сервере, также является хорошей идеей, потому что, поскольку масштабы вещей, это решение становится громоздким для решения.

потенциальным решением было бы иметь очередь задач, такую ​​как сельдерей и rabbitMQ или другое решение, и как-то инициировать задачи из триггеров базы данных. Он масштабируется и может быть относительно прост в управлении в будущем

Мой вопрос: каким будет подходящий метод интеграции триггеров postgresql с очередью задач, подобной сельдерею (im open to other offers). Я просто не знаю, подходит ли то, что я думаю об этом.

Благодарим за помощь.

ответ

0

Лучшим решением является отдельный процесс, который может получать либо межпроцессное, либо HTTP-уведомление, указывающее, когда могут быть данные в базе данных, которая нуждается в обработке.

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

Кроме того, вы можете добавить случайный опрос, например, каждую минуту.

Вы должны держаться подальше от триггеров, они требуют дополнительного подключения, которое необходимо контролировать, если оно ломается, что, в свою очередь, усложняет решение совсем немного.

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