База данных традиционно используется для хранения данных, но я видел, как разработчики использовали таблицы базы данных в качестве очереди заданий. Цель очереди заданий - отслеживать, какие данные необходимо обработать после того, как они были вставлены в эту таблицу. Затем выделенный процесс должен периодически опрашивать / запрашивать необработанные данные в таблице базы данных. В зависимости от частоты опроса и наличия необработанных данных этот метод может стать очень неэффективным. Опрос базы данных легко реализовать и быстро создать прототип. К сожалению, по мере роста вашей системы она скоро покажет свои ограничения в масштабируемости и эффективности. RabbitMQ - идеальное решение для замены этого типа опроса базы данных. В этом видео я подробно расскажу о том, как заменить опрос базы данных на RabbitMQ.

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

Опрос базы данных может не стать проблемой, если опрос проводится нечасто, например, каждые несколько часов или один раз в день. Это типично для пакетных заданий, при которых данные загружаются и выгружаются в другую систему для дальнейшей обработки. Имейте в виду, что по мере увеличения объема данных время обработки отдельных пакетных заданий может быть увеличено за пределы ожидаемого временного окна. В этом случае вам необходимо увеличить частоту опроса или повысить эффективность пакетного задания, чтобы уменьшить общее время выполнения.

Не забудьте ознакомиться с моим Видеокурсом по надежному обмену сообщениями с RabbitMQ.

Первоначально опубликовано на mqmaster.com 26 января 2017 г.