Я подивився, і він використовував для надсилання повідомлень між двома системами.
Але чому? Чому б ти просто не використав Database
?
Має бути якась особливість, ActiveMQ
у якої Databases
цього немає?
Я подивився, і він використовував для надсилання повідомлень між двома системами.
Але чому? Чому б ти просто не використав Database
?
Має бути якась особливість, ActiveMQ
у якої Databases
цього немає?
Відповіді:
Він використовується для надійної комунікації між двома розподіленими процесами.
Так, ви можете зберігати повідомлення в Базі даних, щоб спілкуватися між двома процесами, але, як тільки повідомлення надійде, вам доведеться DELETE
це повідомлення, Це означає рядок INSERT
і DELETE
для кожного повідомлення.
Коли ви намагаєтесь розширити масштаб передачі тисяч повідомлень в секунду, Бази даних, як правило, перепадають .
Посередньо орієнтований на повідомлення середній посуд [MOM], як ActiveMQ
з іншого боку, створений для обробки випадків використання.
Вони припускають, що повідомлення в здоровій системі буде видалено дуже швидко і можуть зробити оптимізацію, щоб уникнути накладних витрат .
Він також може надсилати повідомлення споживачам, замість того, щоб споживач мав опитування щодо нового повідомлення, виконуючи SQL-запит.
Це додатково зменшує затримку, пов'язану з обробкою нових повідомлень, що надсилаються в систему.
ActiveMQ
або взагалі всі реалізації, орієнтовані на повідомлення, середнього програмного забезпечення (MOM) призначені для надсилання повідомлень між двома програмами або двома компонентами всередині однієї програми.
По суті, MOM та бази даних мають спільну основу в тому, що вони забезпечують транзакційне та стійке зберігання даних, з якого можна читати та писати.
Велика різниця полягає в схемі використання - там, де бази даних є дуже загальними та оптимізованими для складного пошуку по декількох таблицях, MOM оптимізується для читання повідомлень, по одному, у такий спосіб, як FIFO [Черга].
JMS
, що є реалізацією API ActiveMQ, є важливим наріжним каменем у додатках Java Enterprise. Це робить повідомлення спільним і досить семантичним форматом, що полегшує інтеграцію між різними програмами.
Звичайно, є багато більш детальних функцій, які є лише в ActiveMQ, провідних протоколах OpenWire
,STOMP
і MQTT
, JMS
, EIP
разом з Apache Camel, шаблони повідомлень , як «запит / відповідь» і «публікація / підписка», JMS Bridging, кластеризація ( » мережа брокерів "), які дозволяють масштабувати та розповсюджувати тощо.
Ви повинні трохи прочитати ці теми, якщо вас цікавить, оскільки вони досить великі.
ActiveMQ
має чудову підтримку планувальника , а це означає, що ви можете запланувати відправлення свого повідомлення, яке буде доставлено у певний час .
Ми використовували цю функцію для надсилання нагадувань про ліки пацієнтам, які завантажують свої дані про ліки у сценарії охорони здоров’я.
Scheduled Jobs
для тих же цілей.
З RDBMS, коли ви обробляєте рядок даних, ви зазвичай оновлюєте прапор, який вказує на те, що рядок був оброблений, щоб обробка не повторювалася.
Однак із чергою повідомлень вам потрібно лише підтвердити повідомлення, і наступний споживач обробить наступне.
Різниця полягає в тому, що UPDATE
статистика в RDBMS - це дійсно повільна робота порівняно з acknowledge
активомq.
Я хотів би наголосити на наступному:
Роз'єднано : Системи можуть спілкуватися без підключення. Черга лежить між системами, одна несправність системи ніколи не вплине на інші, оскільки спілкування здійснюється через чергу. Системи продовжують працювати, коли вони працюють.
Підтримка відновлення : Повідомлення в Чергах самі зберігаються. Повідомлення можуть бути відновлені пізніше, якщо чергу не виходить.
Надійне спілкування . Розгляньте систему, яка обробляє запити клієнта. У звичайних випадках система отримує 100 запитів на хвилину. Ця система є ненадійною, коли кількість запитів перевищує середню. У такому випадку черга може керувати запитами, і вона може періодично надсилати повідомлення на основі пропускної здатності системи, не порушуючи її.
Асинхронний : зв’язок клієнтського сервера не блокує. Після того, як клієнт надіслав запит на сервер, він може робити інші операції, не чекаючи відповіді. Коли відповідь отриманий клієнт може впоратися з цим у будь-який час.
Apache ActiveMQ - це брокер повідомлень з відкритим кодом, написаний на Java разом із повноцінним клієнтом служби Java Message Service (JMS). Він надає "Особливості підприємства", що в цьому випадку означає активізацію зв'язку з більш ніж одним клієнтом або сервером
Щодо ваших запитів:
Чому б ти не використовував базу даних?
Вам слід використовувати базу даних для постійних даних, а не для тимчасових даних. Припустимо, що вам потрібно надіслати повідомлення від Відправника до Одержувача. Отримавши повідомлення, Одержувач виконує одну операцію (приймати, обробляти та забувати). Після обробки цього повідомлення вам це взагалі не потрібно. У цьому випадку зберігання повідомлення в стійкій базі даних не є правильним рішенням.
Я повністю згоден з @Hiram Chirino щодо вставки та видалення повідомлення в базі даних, якщо ви використовуєте базу даних замість системи обміну повідомленнями.
Переваги цієї статті та цієї статті
Має бути функція ActiveMQ має, що бази даних не роблять?
Тут багато. Перегляньте сторінку документації для отримання більш детальної інформації. Подивіться і на випадки використання .
Перегляньте цю презентацію, щоб зрозуміти внутрішні відомості ActiveMQ.
Припустимо, у вас є програма, яка використовується в декількох місцях одночасно. Припустімо також, що ваша програма має обробляти 1000 запитів за хвилину чи щось подібне, тому звичайні операції DB не можуть впоратися з такими операціями, Activemq виконує функцію обробки повідомлень, що приймає всі повідомлення в чергу, так що навіть якщо одна з ваших програм виходить з ладу в одному місці інше місцезнаходження не вплине.