node.js - сообщений - как работает node js
Каковы хорошие параметры очереди сообщений для nodejs? (8)
Глядя на использование очереди сообщений в небольшом веб-приложении, я строю с node.js. Я посмотрел на реск, но не уверен, что это уместно. Цель состоит в том, чтобы направить уведомления клиентам на основе бэкэнд и других действий клиента с помощью socketio. Я мог бы сделать это с помощью только сокета, но я подумал, что, возможно, правильная очередь сообщений сделает это чище, и мне не придется изобретать велосипед.
Какие существуют варианты?
Бесстыдный штепсель: я работаю над Bokeh : простая, масштабируемая и пылающая задача, построенная на ZeroMQ. Он поддерживает подключаемые хранилища данных для сохраняющихся задач, в настоящее время в памяти, Redis и Riak поддерживаются. Проверьте это.
Взгляните на node-busmq - это класс производительности, высокодоступная и масштабируемая шина сообщений, поддерживаемая redis.
Я написал этот модуль для нашего глобального облака и в настоящее время его развертывают в нашей производственной среде в нескольких центрах обработки данных по всему миру. Он поддерживает именованные очереди, одноранговую связь, гарантированную доставку и федерацию.
Для получения дополнительной информации о том, почему мы создали этот модуль, вы можете прочитать это сообщение в блоге: All Aboard The Message Bus
Вы можете взглянуть на
Который использует Redis и предлагает большинство возможностей SQS Amazons.
Вы можете использовать клиент узла STOMP . Это позволит вам интегрироваться с различными очередями сообщений, включая:
- ActiveMQ
- RabbitMQ
- HornetQ
Я раньше не использовал эту библиотеку, поэтому я не могу ручаться за ее качество. Но STOMP - довольно простой протокол, поэтому я подозреваю, что вы можете его взломать в случае необходимости.
Другой вариант - использовать beanstalkd с узлом . beanstalkd - очень быстрая «очередь задач», написанная на C, что очень хорошо, если вам не нужна гибкость функций брокеров, перечисленных выше.
Как насчет Azure ServiceBus? Он поддерживает nodejs.
Посмотрите на node-queue-lib . Возможно, этого достаточно. Он поддерживает node.js и браузеры. Имеет две стратегии доставки: трансляцию и круговое движение. Только javascript.
Быстрый пример:
var Queue = require('node-queue-lib/queue.core');
var queue = new Queue('Queue name', 'broadcast');
// subscribe on 'Queue name' messages
queue.subscribe(function (err, subscriber) {
subscriber.on('error', function(err){
//
});
subscriber.on('data', function (data, accept) {
console.log(data);
accept(); // accept process message
});
});
// publish message
queue.publish('test');
Я рекомендую попробовать Kestrel , это быстро и просто, как Beanstalk, но поддерживает очереди разветвления. Говорит memcached. Он построен с использованием Scala и используется в Twitter.
вы можете использовать redis с быстрым клиентом node_redis . Он даже имеет встроенную семантику pubsub .