Rabbitmq или Gearman - выбор очереди заданий

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

Является ли Rabbitmq хорошей основой для создания распределенной системы заданий поверх?

Ответ 1

Я бы сказал, что Gearman лучше подходит для очередей "рабочих мест", а RabbitMQ лучше подходит для очередей "данных". Конечно, они оба действительно одно и то же, но способ, которым это работает для меня, состоит в том, что, если вы пытаетесь "развернуть" работу, которая должна быть выполнена, и рабочие могут работать самостоятельно, Gearman - лучший способ сделать это, Но если вы пытаетесь подавать данные из большого количества источников вниз на меньшее количество пользователей данных, RabbitMQ - лучшее решение.

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

Ответ 2

Все зависит от того, какую семантику вы хотите выставить. Очень легко сделать то, что Gearman делает на вершине RabbitMQ, что, безусловно, может "раздуть" сообщения для независимых работников.

Но Gearman построен специально. IIUC, Gearman - это основа для обработки рабочих мест, а не система обмена сообщениями как таковая. Существуют и другие такие рамки, такие как сельдерей, которые используют RabbitMQ под капотом для этого. Вот статья о сельдерее, которую стоит прочитать.