Фраза удары, каждый раз полностью зависит от того, чем Ваши требования были для начала. Конечно, не попытка биться каждый раз для всех.
при создании единой системы, которая уже использует базу данных, у Вас нет очень высокопроизводительных требований пропускной способности, и Вы не должны связываться ни с какими другими командами или системами тогда, Вы, вероятно, правы.
Для простой, низкой пропускной способности, главным образом единственного потокового материала, база данных является полностью прекрасной альтернативой очередям сообщений.
то, Где очередь сообщений сияет, - когда
Для простых систем с единой базой данных, командой и довольно скромными требованиями к производительности - верное использование база данных. Используйте правильный инструмент для задания и т.д.
Однако, где сияние очередей сообщений находится в крупных организациях, где существует много систем, которые должны связаться друг с другом (и таким образом, Вы не хотите, чтобы бизнес-база данных была центральной точкой отказа или местом ада версии), или когда у Вас есть высокопроизводительные требования.
С точки зрения производительности очередь сообщений будет всегда бить таблицу базы данных - поскольку очереди сообщений специально предназначены для задания и не полагаются на пессимистические блокировки таблицы (которые требуются для реализации базы данных очереди - сделать выравнивание нагрузки), и , хорошие очереди сообщений выполнят нетерпеливую загрузку сообщений очередям для предотвращения сети наверху базы данных .
Так же - Вы никогда не использовали бы базу данных, чтобы сделать выравнивание нагрузки Запросов HTTP через Ваши веб-серверы - поскольку это будет слишком медленно - если у Вас будут высокопроизводительные требования для Вашей подсистемы балансировки нагрузки, Вы не использовали бы базу данных также.
Я использовал таблицы сначала, затем осуществляю рефакторинг к законченной очереди сообщений, когда (и если) существует причина - который тривиален, если Ваш дизайн разумен.
самые большие преимущества являются a.) это легче, (b., это - лучший журнал аудита, потому что у Вас есть другие таблицы для присоединения к, c.), если Вы знаете инструменты базы данных действительно хорошо, их легче использовать, чем инструменты Message Queue, d.) обычно немного легче настроить test/dev среду в контексте, который уже существует для Вашего приложения (если то же знакомство применяется).
, О, и e.) для, возможно, Вас и других, это не другой продукт, чтобы изучить, установить, настроить, администрировать, и поддерживать.
IMPE, это так же надежно, disconnectable, и можно преобразовать, если этому нужно более масштабируемый.
Данные постоянно хранятся на таблице. Я видел так многих Java (jms) приложения, которые освобождают или исчезают сообщения на их пути к неперехваченным исключениям или другим ошибкам.
, Который реализация JMS? Sun продает надежную очередь, которая не может потерять сообщения. Возможно, Вы просто купили дрянной JMS-совместимый продукт. MQ IBM чрезвычайно надежен, и существуют библиотеки JMS для доступа к нему.
Очереди склонны заполняться. Устройство хранения данных дб фактически бесконечно, вместо этого.
Ummm... Если Ваша очередь заполняется, она кажется, что что-то повреждается. Если Ваши приложения отказывают, это не хорошая вещь, и очереди имеют мало общего с этим. Если Вы купили действительно плохую реализацию JMS, я вижу, где Вы могли бы быть недовольны ею. Это - конкурентоспособный рынок. Найдите лучший диспетчер очереди. JCAPS Sun имеет действительно хороший диспетчер очереди, раньше очередь сообщений SeeBeyond.
Таблицы легкодоступны, в то время как необходимо использовать esotic инструменты для чтения из очереди.
, Который не соответствует моему опыту. К таблицам получают доступ через это специфический "другой язык" (SQL), и требует, чтобы я знал об отображениях структуры от таблиц до объектов и отображениях типа данных от VARCHAR2 для Строкового представления. Далее, я должен использовать некоторый слой доступа (JDBC или ORM, который использует JDBC). Это кажется очень, очень сложным. К очереди получают доступ через MessageConsumers, и MessageProducers, использующий простой, отправляет и получает.
Это звучит, как будто проблемы, которые Вы испытали, не свойственны к обмену сообщениями, а скорее являются артефактами плохо реализованных систем обмена сообщениями. Создает системы обмена сообщениями тяжелее, чем создание систем баз данных? Да, если все, что Вы когда-либо делаете, создать системы баз данных.
Аспекты обмена сообщениями, которые делают его выше баз данных:
, Если Вам не нужны эти вещи, Вам, вероятно, не нужен обмен сообщениями.
Вот простой пример приложения для обмена сообщениями: я создаю систему прямо сейчас, где пользователи, распределенные через несколько сетей, вводят довольно сложные наборы транзакций, которые используются для создания распечатанного вывода. Выходное поколение является в вычислительном отношении дорогим и не часть их рабочего процесса; т.е. пользователи не заботятся, когда вывод сгенерирован, просто что он делает.
, Таким образом, мы сериализируем транзакции в сообщение и отбрасываем его в очереди. Процесс, работающий на сервере, захватывает сообщения от очереди, производит вывод и хранит вывод в системе обработки изображений.
, Если бы мы использовали базу данных в качестве нашего банка сообщений, мы должны были бы придумать схему для хранения формата транзакции, о котором прямо сейчас только заботятся отправитель и получатель, мы должны были бы удостовериться, что каждая рабочая станция в сети имела постоянные постоянные соединения к серверу базы данных, у нас не будет возможности распределить эту загрузку транзакции через несколько серверов, и наш выходной сервер должен был бы запросить базу данных тысячи времен в день, ожидая, чтобы видеть, были ли новые задания для обработки.
Очереди обеспечивают надежный обмен сообщениями. Промежуточная буферизация, разъединенная природа организации очередей делает его намного более масштабируемым, чем базы данных, не говоря уже о более устойчивом.
И очереди не должен действительно использоваться для постоянного хранения информации - лучше думать о них как о временных ящиках входящих сообщений, в отличие от баз данных.