Обновление
Существуют ли сценарии, в которых мне нужен RabbitMQ для веб-приложений, когда Socket.io не достаточно?Пользователи браузера должны иметь возможность общаться друг с другом через сервер node.js.Один из пользователей пишет сообщение, и все остальные пользователи получают его.
Если у вас есть только эти простые требования, достаточно будет только socket.io. .Вам нужно только сообщение queue , когда вы хотите обрабатывать свои задания (тяжелые) в автономном режиме и контролируемым образом.
http://en.wikipedia.org/wiki/Message_queue:
Очереди сообщений предоставляютпротокол асинхронной связи, означающий, что отправителю и получателю сообщения не нужно взаимодействовать с очередью сообщений одновременно.
Это предложение должно быть включено. Производитель (один процесс)помещает задание в очередь, а потребитель потребляет, забирая задание из очереди.В большинстве случаев потребителями являются несколько процессов, которые одновременно используют несколько заданий.Потребитель не может сказать друг другу, какие задания он использует.
Это делает структуру данных FIFO первым в очереди.
Это я считаю важным свойством очереди.Свойство First-In-First-Out, хотя с расширенной очередью сообщений, такой как beanstalkd, вы можете назначать приоритеты заданий.
Надеюсь, это вообще имеет какой-то смысл;)
Я занимаюсь разработкой веб-приложений в реальном времени.
Не могли бы вы объяснить немного лучше, чтобы мы могли дать вам лучший ответ?
Не знаюпонять, как работает RabbitMQ.Но из быстрого чтения кажется, что он обрабатывает публикацию / подписку сообщений.
См. Цитату об очереди сообщений ниже.Позвольте этому погрузиться на некоторое время.Вы также можете прочитать WIKI о очередях сообщений .
Пользователь (в браузере) публикует что-то, и подписчики (в других браузерах) получают это сообщение.Разве это не то, что Socket.io делает с веб-сокетами?
Socket.io поддерживает множество различных транспортов (также веб-сокетов), и это должно происходить, потому что веб-сокеты не поддерживаются большинством браузеров.Но, например, Google Chrome уже поддерживает веб-сокеты.Я считаю, что веб-сокеты - это транспорт будущего (но пока нет!).Если вы посмотрите на страницу поддержки браузера Socket.io , вы заметите, что Socket.io поддерживает все основные браузеры (некоторые даже древние).Приятно то, что это оборачивается вокруг хорошего API.
Каковы преимущества / недостатки каждого из них?
Вы сравниваете яблоки с апельсинами такСравнение это немного странно.
RabbitMQ
http://www.rabbitmq.com/tutorials/tutorial-one-python.html:
RabbitMQ - брокер сообщений.Основная идея довольно проста: она принимает и пересылает сообщения.Вы можете думать об этом как о почтовом отделении: когда вы отправляете почту в почтовый ящик, вы почти уверены, что мистер Почтман в конечном итоге доставит почту вашему получателю.Используя эту метафору, RabbitMQ - это почтовый ящик, почтовое отделение и почтальон.
Преимущества
- Это довольно хорошая очередь сообщений .Лично я бы использовал redis или beanstalkd .
Недостатки:
- Не совсем для "браузеров".
Socket.io
http://socket.io/:
Socket.IO стремится сделать приложения реального времени возможными в каждом браузере имобильное устройство, стирая различия между различными транспортными механизмами.
Преимущества
Недостатки
- Это не очередь сообщений.
Может ли Socket.io заменить RabbitMQ?
Нет, вы не можете, потому что это две совершенно разные вещи.Вы сравниваете яблоки с апельсинами.Вы должны попытаться понять оба описания с сайтов, которые я цитировал.