Хотя использование Redis для кэширования и публикации/подписки мне ясно, неясно, можно ли использовать Redis вместо полноценной системы обмена сообщениями, такой как JMS, AMQP или ZeroMQ.
Оставляя в стороне аспект соответствия стандартам и концентрируясь только на функциональности/возможностях, обеспечивает ли Redis поддержку всех шаблонов/моделей обмена сообщениями, необходимых для системы обмена сообщениями?
Шаблоны обмена сообщениями, о которых я говорю:
- RPC/Request-reply (пример
с использованием ActiveMQ/JMS и другой с использованием RabbitMQ/AMQP) - Конвейерные/рабочие очереди (однократное и не более одного использования каждого из них) сообщение)
- Broadcast (все подписаны на канал)
- Multicast (фильтрация сообщений на сервере на основе селекторов потребителей)
- Любой другой шаблон обмена сообщениями?
Я смотрю на это в контексте веб-приложения, поддерживаемого сервером Java/Java EE.
И я смотрю на это не с точки зрения проверки концепции, а с точки зрения крупномасштабной разработки программного обеспечения.
Редактировать 1:
пользователь:791406 задал правильный вопрос:
"Кого волнует, поддерживает ли Redis эти шаблоны; будет ли Redis соответствовать вашим требованиям SLA
и QoS?"
Я подумал, что лучше дать эту информацию как часть вопроса, а не в разделе комментариев.
Мои текущие потребности связаны не столько с SLA и QOS, сколько с выбором инструмента для моей работы (обмен сообщениями), который я смогу использовать, даже когда мои требования (разумно) вырастут в будущем.
Сначала я начинаю с упрощенных требований, и мы все знаем, что требования имеют тенденцию расти.
И НЕТ, я не ищу один инструмент, который делает все это.
Я просто хочу знать, выполняет ли Redis обычные требования, ожидаемые от системы обмена сообщениями, как это делает ActiveMQ/RabbitMQ. Конечно, если мои потребности в SLA/QOS экстремальны/эксцентричны, мне понадобится специальный инструмент для их удовлетворения. Например: в некоторых случаях ZeroMQ может быть выбран вместо RabbitMQ из-за особых требований SLA. Я не говорю о таких особых требованиях. Я ориентируюсь на средние корпоративные требования.
Я боялся (основываясь на моем небольшом понимании), что, хотя Redis можно использовать в качестве основного инструмента для моих сегодняшних потребностей в обмене сообщениями, он может оказаться неподходящим инструментом для реальной работы по обмену сообщениями в будущем. У меня есть опыт работы с системами обмена сообщениями, такими как ActiveMQ/RabbitMQ, и я знаю, что их можно использовать для простых и (достаточно) сложных задач обмена сообщениями.
Edit2:
- На веб-сайте Redis упоминается, что «Redis часто используется в качестве сервера обмена сообщениями», но неясно, как добиться таких шаблонов обмена сообщениями.
- Сальваторе Санфилиппо упоминает, что пользователи Redis склонны использовать его в качестве базы данных, как шину обмена сообщениями или в качестве кэша. Неясно, в какой степени он может служить «шиной сообщений».
- Когда я пытался выяснить, какие требования к обмену сообщениями в JMS, которые Redis не поддерживает, я наткнулся на то, что Redis поддерживает, а JMS нет: Подписки с сопоставлением шаблонов, т. е. клиенты могут подписываться на шаблоны в стиле glob, чтобы получать все сообщения, отправленные на имена каналов, соответствующие заданному шаблону.
Я решил использовать JMS для обмена сообщениями и использовать Redis для кэширования.
Мобильная версия