Есть ли веская причина использовать сервер на основе AMQP над чем-то вроде beanstalkd или redis?

Я пишу часть проекта, ответственного за обработку задач вне основного приложения, стоящего перед сервером данных, который написан в javascript, используя Node.js. Он должен обрабатывать задачи, которые запланированы в будущем, и потенциально обрабатывать задачи, которые "прямо сейчас". "Прямо сейчас" означает, что в следующий раз, когда рабочий станет доступным, он будет работать над этой задачей, так что бит может не иметь значения. Работники собираются поговорить с внешними ресурсами, примером будет послание электронной почты. Мы небольшой магазин, и у нас нет много ресурсов, поэтому одна вещь, которую я не хочу делать, это начать смешивать языки на этом этапе процесса, и я уже вижу, что Node может сделать это для нас довольно легко, так что с чем мы собираемся идти, если я не вижу веской причины не раньше, чем начать кодирование, что скоро.

Все, что сказал, я не могу сказать, есть ли веские причины использовать сервер на основе AMQP, например OpenAMQ или RabbitMQ над чем-то вроде Kue или Beanstalkd с клиентом Node. Итак, здесь мы идем:

Есть ли веская причина использовать сервер на основе AMQP над чем-то вроде beanstalkd или redis с Kue? Если да, какой сервер на основе AMPQ лучше всего подходит для архитектуры, которую я изложил? Если нет, какое решение nosql (beanstalkd, redis/Kue) было бы проще всего установить и быстрее всего развернуть?

Ответ 1

FWIW, я еще не принимаю свой ответ, я собираюсь объяснить, что я решил и почему. Если я не получу ответов, которые кажутся лучше, чем я решил, я приму свое позднее.

Я решил о Кью. Он поддерживает несколько рабочих, работающих асинхронно, и с кластером он может использовать многоядерные системы. Он легко распространяется для обеспечения безопасности. Он поддерживал Redis, который используется повсюду для этой конкретной вещи, поэтому я знаю, что я не поддерживаю свой сервер рабочих процессов с помощью недоказанного программного обеспечения (что не означает, что любой из них недоказан.)

Наиболее вескими причинами, которые я выбрал Kue, является то, что он предоставляет JSON api, так что клиентские приложения (первый клиент будет веб-приложением, но мы также планируем создавать приложения для смартфонов) могут добавлять задания легко, без прохождения основного приложения, обращенного к экземпляру node, поэтому я могу быть полностью в стороне от остальной части моей команды, когда я пишу это. Мне не нужен маршрут, мне ничего не нужно, и все это предусмотрено для меня, поэтому мне не нужно ничего писать, чтобы поддержать это. Это имеет еще одно преимущество: с расширением для обеспечения безопасности l/p только авторизованные клиенты могут добавлять задания, поэтому я не должен подвергать свой redis сервер клиентским приложениям напрямую. Он также имеет встроенную веб-консоль, и API позволяет клиенту легко отбирать списки заданий, связанных с данным пользователем, поэтому мы можем показать пользователю все свои запланированные задачи в отличном календарном представлении с 0 усилием с моей стороны,

Другая убедительная причина - отсутствие крутой кривой обучения, связанной с получением redis и Kue для меня. Я настроил redis раньше, и Kue прост и эффективен.

Да, я ленивый разработчик, но я хороший тип ленивого разработчика.

UPDATE:

У меня есть работа и работа, производительность потрясающая. Я разделил логику маршалинга задачи на свой собственный экземпляр node, в основном все, что мне нужно сделать, это развернуть мое репо на новый компьютер и запустить node task-server.js, чтобы уменьшить мои рабочие. Возможно, мне придется добавить еще несколько запросов на поиск работы в Kue, из-за того, как я повлиял на некоторые вещи, но это будет легко.