2013-09-25 2 views
1

Я планирую иметь постоянное сообщение Очереди, основанные на некоторой реализации AMQP и JMS API. Я хотел бы знать, нормально ли (с архитектурной точки зрения), чтобы сообщения оставались в очередях часами. День максимальный.Как долго может эффективно оставаться сообщение в Message broker Q

Я планирую использовать брокер сообщений как другой уровень сохранения в основном. Является ли это жизнеспособным?

Технологии, которые я оцениваю, это ActiveMQ, RabbitMQ или qupid.

ответ

2

Я планирую использовать брокер сообщений как еще один уровень устойчивости в основном. Является ли это жизнеспособным?

Механизм сохранения брокера для хранения сообщений обычно основан на файлах или JDBC; либо один будет работать. Это жизнеспособно? Конечно, его особенность брокера, ничего неправильного в использовании его по назначению, предполагая временное удержание сообщений - ваша цель; 1 день - это не большое дело.

Но если вы планируете сохранять сообщения в течение 1 дня или более, я рекомендую делать некоторые вычисления на основе среднего размера сообщения и общего количества сообщений в день, которые может в конечном итоге сидеть в очереди. Глубина очереди по умолчанию, как правило, является небольшим числом, например 10 МБ, и если оно превышено, брокер, вероятно, отбросит последующие сообщения; вы хотите предотвратить это. Продавцы обрабатывают это по-разному, поэтому уточните с помощью RabbitMq и ActiveMQ для конкретных особенностей и какие параметры конфигурации используются для управления глубиной. Я знаю, что SonicMq имеет так называемую очередь «DeadMessage», место назначения для истекших или недостижимых сообщений; другие продукты могут иметь что-то подобное.

0

Это нормально, если у вас есть постоянные очереди, и все нормально, если в очереди находятся сообщения: клиенты могут быть отключены из-за обновлений, сетевых проблем и т. Д. Это одно из преимуществ очередей, чтобы отделить отправителя от получателя, а очередь буфер. Однако эти случаи использования не являются нормальным режимом работы, а скорее исключительной ситуацией.

Использование сообщений брокера, как «другой сохранение слоя» технически говоря возможно, но в этом случае база данных, вероятно, более подходит, потому что быстрой доставки сообщений/сообщений и длительного хранения/базы данных различные инструменты/сценарии. Поэтому задайте себе вопрос: все ли это обмен сообщениями или это уже база данных?

Если в вашем Прецеденте нормальной задержка сообщения (= период между отправкой и приемом) всегда за час, база данных может быть лучше, потому что JMS селекторы, как правило, медленнее и менее удобно, чем запросы к базе данных с использованием где статьи.

Существует еще один аспект: рассмотрите необходимость онлайн-резервного копирования ваших сообщений в JMS-провайдере, особенно в режиме кластера HA. Это может быть проще сделать с помощью базы данных.

+0

Обратите внимание, что сервер, на котором работает брокер сообщений (например, RabbitMQ) с сообщениями PERSISTENT, на самом деле является сервером базы данных, и вы должны планировать его соответствующим образом. Например, если вы используете виртуальный сервер, убедитесь, что он использует локальный жесткий диск для хранилища постоянных сообщений, потому что загрузка ввода-вывода будет аналогична загрузке сервера базы данных. –