Подтвердить что ты не робот

Для чего используется ActiveMQ?

Я посмотрел его, и вы отправили ему сообщения. Но почему? Почему бы вам просто не использовать базу данных? Должна быть какая-то особенность, которую есть у ActiveMQ, чего нет у баз данных?

4b9b3361

Ответ 1

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

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

Ответ 2

ActiveMQ или, в общем, все реализации, ориентированные на Message Oriented Middleware (MOM), предназначены для отправки сообщений между двумя приложениями или двух компонентов внутри одного приложения.

По существу, MOM и базы данных имеют общую основу в том, что они обеспечивают транзакционное и постоянное хранилище данных, которое может читать и писать. Большая разница - это шаблон использования - когда базы данных очень общие и оптимизированы для сложного поиска по нескольким таблицам, MOM оптимизированы для чтения сообщений, по одному за раз в формате FIFO.

JMS, который является API ActiveMQ, является важным краеугольным камнем в приложениях Java Enterprise. Это делает сообщения общими для общего формата и семантики, что упрощает интеграцию между различными приложениями.

Конечно, есть много более подробных функций, которые только в ActiveMQ, проводные протоколы, такие как OpenWire, STOMP и MQTT, JMS, EIP вместе с Apache Camel, шаблоны сообщений, такие как "запрос/ответ" и "публикация/подписка" ", JMS Bridging, кластеризация (" сеть брокеров "), которые позволяют масштабирование и распределение и т.д. Вам следует немного почитать эти темы, если вам интересно, поскольку они довольно большие.

Ответ 3

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

Ответ 4

С РСУБД, когда вы обрабатываете строку данных, вы обычно обновляете флаг, указывающий, что строка обработана, чтобы обработка не повторялась.

Однако в очереди сообщений вам нужно только подтвердить сообщение, а следующий потребитель обработает следующий.

Разница в статусе UPDATE в РСУБД - очень медленная операция по сравнению с acknowlege в activmeq.

Ответ 5

Я хотел бы подчеркнуть следующее:

Развязанный: системы могут общаться без подключения. Очередь лежит между системами, один системный сбой никогда не повлияет на других, поскольку связь осуществляется через Очередь. Системы продолжают работать, когда они работают.

Поддержка восстановления. Сообщения в самих очередях сохранялись. Сообщения могут быть восстановлены позже, если очередь не выполнена.

Надежная связь. Рассмотрим систему, обрабатывающую запросы клиентов. В обычных случаях система получает 100 запросов в минуту. Эта система ненадежна, когда количество запросов выходит за пределы среднего. В таком случае Queue может управлять запросами и может периодически отправлять сообщения на основе пропускной способности системы, не нарушая ее.

Асинхронный. Связь клиентского сервера не блокируется. Когда клиент отправляет запрос на сервер, он может выполнять другие операции, не дожидаясь ответа. Когда ответ, который он получил, клиент может обрабатывать в любое время.

Ответ 6

Из Википедии

Apache ActiveMQ - это брокер сообщений с открытым исходным кодом, написанный на Java вместе с полноценным клиентом Java Message Service (JMS). Он предоставляет "Особенности предприятия", что в данном случае означает стимулирование связи более чем с одним клиентом или сервером.

Что касается ваших запросов:

Почему бы вам не использовать базу данных?

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

Я полностью согласен с ответом @Hiram Chirino относительно вставки и удаления сообщений в базе данных, если вы используете базу данных вместо системы обмена сообщениями.

Преимущества этой статьи и этой статьи

  1. Корпоративная интеграция: позволяет приложениям, созданным на разных языках и в разных операционных системах, интегрироваться друг с другом
  2. Прозрачность расположения: клиентским приложениям не нужно знать, где находятся приложения-службы
  3. Надежное общение - производители/потребители сообщений не должны быть доступны одновременно
  4. Масштабирование - можно масштабировать горизонтально, добавляя больше услуг
  5. Асинхронная связь - клиент может запустить сообщение и продолжить другую обработку вместо блокировки, пока служба не отправит ответ;
  6. Уменьшение связи - предположения, сделанные клиентами и службами, значительно уменьшены в результате предыдущих 5 преимуществ. Служба может изменять сведения о себе, включая ее местоположение, протокол и доступность, не затрагивая и не нарушая работу клиента.

Должна быть функция ActiveMQ, что базы данных не?

Здесь очень много. Посмотрите на странице документации для более подробной информации. Посмотрите на варианты использования тоже.

Взгляните на эту презентацию, чтобы понять внутренности ActiveMQ.

Ответ 7

Предположим, что у вас есть приложение, которое одновременно используется в нескольких местах. Также предположим, что ваше приложение должно обрабатывать 1000 запросов в минуту или что-то в этом роде, поэтому нормальные операции db не могут обрабатывать такие операции, Activemq действует как обработка сообщений, и все сообщения попадают в очередь, поэтому даже если одно из ваших приложений сработает в одном месте другое место не будет затронуто.