Чи є причина використовувати RabbitMQ над Kafka?


332

Мене попросили оцінити RabbitMQ замість Kafka, але мені було важко знайти причину, що це робить щось краще, ніж Kafka. Хтось знає, чи справді це краще в пропускній здатності, довговічності, затримці чи простоті у використанні?


7
насамперед, на основі думки. Багато хороших питань породжують певну ступінь думок на основі досвіду експертів, але відповіді на це питання, як правило, майже повністю базуються на думках, а не на фактах, посиланнях чи конкретних знаннях.
VdeX

2
@Guillaume Це не обов'язково правда. Для Kafka доступні клієнти для багатьох мов: cwiki.apache.org/confluence/display/KAFKA/Clients Крім того, Confluent пропонує безліч високоефективних клієнтів з відкритим кодом Kafka іншими мовами. Ознайомтесь із пропозицією "Конфлюент з відкритим кодом": confluent.io/product/compare
Маттіас Дж. Сакс

3
@ MatthiasJ.Sax І RabbitMQ, і kafka мають безліч клієнтів на багатьох мовах, але моя думка стосувалася офіційних клієнтів. У посиланні, яке ви надали, написано чорним по білому: ми підтримуємо всіх клієнтів, крім jvm, зовнішніх до основної кодової бази . Щодо конфугента, я справді великий користувач, але додаткові клієнти проходять через API мовного агностику для відпочинку, який, хоча і досить приголомшливий, не має такої ж пропускної здатності, як офіційний клієнт Java.
Гійом

2
@Guillaume Для "випадкових" клієнтів з відкритим кодом із спільноти я згоден; не всі високі показники (досить складно написати хорошого клієнта) - саме тому я поставив "Це не обов'язково правда". ;) Однак клієнти Cluc C ++ та Python, надані Confluent, відрізняються високою пропускною спроможністю та ефективними, як клієнти AK Java ...
Matthias J. Sax

Я рекомендую прочитати цей блог: jack-vanlightly.com/blog/2017/12/4/…
roottraveller

Відповіді:


467

RabbitMQ - це надійний брокер повідомлень загального призначення, який підтримує декілька протоколів, таких як AMQP, MQTT, STOMP тощо. Він може працювати з високою пропускною здатністю. Загальний випадок використання RabbitMQ - це обробка фонових завдань або тривалих завдань, таких як сканування файлів , масштабування зображень або перетворення в PDF. RabbitMQ також використовується між мікросервісами, де він служить засобом спілкування між програмами, уникаючи пропускання повідомлень про вузькі місця.

Kafka - це шина повідомлень, оптимізована для потоків даних із великим входом та відтворення. Використовуйте Kafka, коли у вас є необхідність переміщувати велику кількість даних, обробляти дані в режимі реального часу або аналізувати дані за певний проміжок часу. Іншими словами, там, де дані потрібно збирати, зберігати та обробляти. Наприклад, коли ви хочете відстежувати активність користувачів на веб-магазині та генерувати запропоновані товари для покупки. Інший приклад - аналіз даних для відстеження, прийому всередину, ведення журналів або безпеки.

Kafka можна розглядати як надійного брокера повідомлень, де програми можуть обробляти та повторно обробляти потокові дані на диску. У Kafka дуже простий підхід до маршрутизації. RabbitMQ має кращі варіанти, якщо вам потрібно складно направляти свої повідомлення до споживачів. Використовуйте Kafka, якщо вам потрібно підтримувати пакетних споживачів, які можуть бути офлайн або споживачами, які хочуть повідомляти з низькою затримкою. 

Для того, щоб зрозуміти, як читати дані від Kafka, спершу потрібно розібратися у її споживачах та споживчих групах. Розділи дозволяють паралелізувати тему, розділивши дані на декілька вузлів. Кожен запис у розділі присвоюється та ідентифікується за його унікальним зміщенням. Це зміщення вказує на запис у розділі. В останній версії Kafka Kafka підтримує числове зміщення для кожного запису в розділі. Споживач у Kafka може або автоматично здійснювати компенсації періодично, або він може вибрати керовану позицію вручну. RabbitMQ зберігатиме всі стани про споживані / підтверджені / непідтверджені повідомлення. Я вважаю Кафку складнішою для розуміння, ніж випадок RabbitMQ, коли повідомлення просто видаляється з черги, коли воно зачеплене.

Черги RabbitMQ найшвидші, коли вони порожні, тоді як Kafka зберігає велику кількість даних з дуже невеликими накладними витратами - Kafka призначена для зберігання та розповсюдження великих обсягів повідомлень. (Якщо ви плануєте мати дуже довгі черги в RabbitMQ, ви можете подивитися на ледачі черги .)

Kafka побудований з нуля вгору з горизонтальним масштабуванням (масштабуючи додавання більшої кількості машин) на увазі, тоді як RabbitMQ здебільшого розроблений для вертикального масштабування (масштабування, додаючи більше потужності).

RabbitMQ має вбудований зручний інтерфейс, який дозволяє контролювати і обробляти ваш сервер RabbitMQ через веб-браузер. Крім усього іншого, можна обробляти черги, з'єднання, канали, обміни, користувацькі та користувацькі дозволи - створювати, видаляти та перелічувати в браузері, а також можна відстежувати швидкість повідомлень та надсилати / отримувати повідомлення вручну. Kafka має ряд інструментів з відкритим кодом, а також деякі комерційні колись , які пропонують функції адміністрування та моніторингу. Я б сказав, що легше / швидше отримати хороше розуміння RabbitMQ.

Більше прочитання та деякі дані порівняння можна знайти тут: https://www.cloudamqp.com/blog/2019-12-12-when-to-use-rabbitmq-or-apache-kafka.html

Рекомендуючи також галузевий документ: "Kafka versus RabbitMQ: порівняльне дослідження двох галузевих посилань на публікації / підписки": http://dl.acm.org/citation.cfm?id=3093908

Я працюю в компанії, що надає як Apache Kafka, так і RabbitMQ як послугу.


31
Що означає "великий вхід"?
Мартін Тома

23
високий вхід = прийом з високою пропускною здатністю
jbustamovej

6
Я сумніваюсь у вашій думці щодо RabbitMQ, "в основному призначеного для вертикального масштабування". Як так ...
Ryan.Bartsch

17
Горизонтальне масштабування (масштабування шляхом додавання більшої кількості машин) не дає кращих показників роботи у RabbitMQ. Найкращі показники отримуються при вертикальному масштабуванні (масштабуючи додавання більшої потужності). Я це знаю, бо вже багато років працюю з тисячами кластерів RabbitMQ. Ви можете виконати горизонтальне масштабування у Кролика, але це означає, що ви також встановите кластеризацію між своїми вузлами, що сповільнить вашу налаштування. Я написав посібник про найкращу практику щодо високої продуктивності та високої доступності в RabbitMQ: cloudamqp.com/blog/2017-12-29-part1-rabbitmq-best-practice.html
Йоханссон

4
"... поки Кафка цього не робить, вона передбачає, що споживач слідкує за тим, що спожито, а що ні". Це неправильно. Кафка відслідковує повідомлення, які споживає кожен окремий споживач.
jucardi

36

Я чую це питання щотижня ... У той час як RabbitMQ (наприклад, IBM MQ або JMS або інші рішення для обміну повідомленнями) використовується для традиційних повідомлень, Apache Kafka використовується як потокова платформа (обмін повідомленнями + розподілене зберігання + обробка даних). Обидва побудовані для різних випадків використання.

Ви можете використовувати Kafka для "традиційних повідомлень", але не використовувати MQ для конкретних сценаріїв для Kafka.

Стаття « Apache Kafka vs. Enterprise Service Bus (ESB) - Друзі, Вороги чи Френемі? ( https://www.confluent.io/blog/apache-kafka-vs-enterprise-service-bus-esb-friends-enemies-or-frenemies/ ) ”обговорює, чому Kafka не є конкурентоспроможною, а доповнює рішення щодо інтеграції та обміну повідомленнями. (включаючи RabbitMQ) та як інтегрувати обидва.


30

5 Основні відмінності між Kafka та RabbitMQ, клієнтом, який ними користується: введіть тут опис зображення

Яку систему обміну повідомленнями вибрати або ми повинні змінити існуючу систему обміну повідомленнями?

На вказане вище питання немає жодної відповіді. Один з можливих підходів до огляду , коли ви повинні вирішити , яку систему обміну повідомленнями або ви повинні змінити існуючі системи є « Оцінка масштабів і вартості »


5
Де ваше джерело для цієї інформації? Я не згоден з вашою відповіддю щодо продуктивності в RabbitMQ - це залежить від кількості черг, з'єднань тощо.
Lovisa Johansson

Правильно. Але середній діапазон дисперсії аналогічний зазначеному вище. Існує сценарій, коли це краще або гірше, ніж вищезгаданий діапазон. Перегляньте блог Rabbitmq. Останні точки даних могли змінити rabbitmq.com/blog/2012/04/25/…
Шишир

@Shishir - Чи можете ви поділитися деталями / посиланнями, що пояснюють різні типи обміну повідомленнями - прямий, фан-аут, паб / суб тощо? Ці звуки допоможуть визначити правильну платформу обміну повідомленнями для заданих вимог. Спасибі
Енді

@Shishir посилання з 2012 року, можливо, змінилося, так.
Ловіса Йоханссон

@AndyDufresne, трохи пізно, але ось посилання: cloudamqp.com/blog/…
Йоханссон

28

Важлива відмінність, яку ви забули, це RabbitMQ - це система обміну повідомленнями на основі push, тоді як Kafka - це система обміну повідомленнями на основі витягування. Це важливо в сценарії, коли система обміну повідомленнями повинна задовольняти різні типи споживачів з різними можливостями обробки. За допомогою системи на основі Pull споживач може споживати виходячи зі своїх можливостей, коли push-системи відштовхуватимуть повідомлення незалежно від стану споживача, тим самим ставлячи споживача до високого ризику.


3
Ви можете домогтися як підтягування, так і за допомогою RabbitMQ
Nikolas

16

RabbitMQ - це традиційний брокер повідомлень загального призначення. Це дозволяє веб-серверам швидко відповідати на запити та доставляти повідомлення на кілька служб. Видавці можуть публікувати повідомлення та робити їх доступними для черг, щоб споживачі могли їх отримувати. Зв'язок може бути асинхронним або синхронним.


З іншого боку, Apache Kafka - це не просто брокер повідомлення. Спочатку вона була розроблена та впроваджена LinkedIn, щоб слугувати чергою повідомлень. З 2011 року компанія Kafka відкрита та швидко перетворилася на платформу розподіленої потокової передачі, яка використовується для впровадження в режимі реального часу конвеєрів даних та потокових програм.

Він горизонтально масштабований, стійкий до відмов, швидко злий і працює у виробництві у тисячах компаній.

Сучасні організації мають різні трубопроводи даних, які полегшують комунікацію між системами або службами. Все стає дещо складнішим, коли розумна кількість послуг потребує спілкування між собою в режимі реального часу.

Архітектура стає складною, оскільки необхідні різні інтеграції для того, щоб забезпечити взаємозв'язок цих служб. Точніше, для архітектури, яка охоплює m джерело та n цільових служб, необхідно написати nxm чіткі інтеграції. Крім того, кожна інтеграція має іншу специфікацію, що означає, що може знадобитися інший протокол (HTTP, TCP, JDBC тощо) або інше представлення даних (Binary, Apache Avro, JSON тощо), що робить речі ще складнішими. . Крім того, джерельні служби можуть вирішити збільшення навантаження від з'єднань, що може вплинути на затримку.

Apache Kafka приводить до більш простої та керованої архітектури, шляхом роз’єднання трубопроводів даних. Kafka діє як розподілена система з високою пропускною спроможністю, де джерельні служби виштовхують потоки даних, роблячи їх доступними для цільових служб, щоб перетягувати їх у режимі реального часу.

Також зараз доступно багато інтерфейсів з відкритим кодом та на рівні корпоративних користувачів для управління кластерами Kafka. Детальніше див. Мої статті Огляд інструментів моніторингу інтерфейсу для кластерів Apache Kafka та Чому Apache Kafka?


Рішення про те, чи їхати на RabbitMQ чи Kafka, залежить від вимог вашого проекту. Загалом, якщо ви хочете простого / традиційного брокера паб-підсистеми, тоді перейдіть на RabbitMQ. Якщо ви хочете побудувати архітектуру, орієнтовану на події, поверх якої ваша організація буде діяти над подіями в режимі реального часу, перейдіть до Apache Kafka, оскільки вона забезпечує більше функціональних можливостей для цього архітектурного типу (наприклад, Kafka Streams або ksqlDB).


15

Я знаю, що це трохи пізно, і, можливо, ви вже, опосередковано, це сказали, але знову ж таки, Кафка - це зовсім не черга, це журнал (як хтось сказав вище, опитуючи опитування).

Щоб зробити це простішим, найбільш очевидним випадком використання, коли вам слід віддати перевагу RabbitMQ (або будь-якому техно-черзі) перед Kafka, є наступний:

У вас є кілька споживачів, які споживають з черги, і кожного разу, коли в черзі з’являється нове повідомлення та доступний споживач, ви хочете, щоб це повідомлення було оброблене. Якщо ви уважно подивитеся на те, як працює Кафка, то помітите, що вона не знає, як це зробити, через масштабування розділів у вас з’явиться споживач, присвячений розділу, і ви потрапите в голодування. Випуск, який легко уникнути, використовуючи просту технічну чергу. Можна подумати про використання потоку, який буде відправляти різні повідомлення з одного розділу, але знову ж таки, у Кафки немає механізмів вибіркового підтвердження.

Найбільше, що ти можеш зробити, - це ти, хлопці, і спробувати перетворити Кафку в чергу: https://github.com/softwaremill/kmq

Яник


10

Використовуйте RabbitMQ, коли:

  • Вам не доведеться працювати з Bigdata, і ви віддаєте перевагу зручний вбудований інтерфейс для моніторингу
  • Немає необхідності в автоматично повторюваних чергах
  • Немає декількох підписників на повідомлення. Оскільки на відміну від Kafka, який є журналом, RabbitMQ - це черга, і повідомлення видаляються, коли вони споживаються та підтвердження надійшло
  • Якщо у вас є вимоги використовувати Wildcards та регулярні вирази для повідомлень
  • Якщо визначення пріоритету повідомлення важливо

Коротше кажучи: RabbitMQ хороший для простих випадків використання, з низьким трафіком даних, з користю черги пріоритетів та гнучких варіантів маршрутизації. Для масових даних та високої пропускної здатності використовуйте Kafka.


Для декількох абонентів обробляється чудово, не в одній черзі, а розпізнаючи кілька та потенційно динамічні черги. Кролик, звичайно, не тільки для «простих випадків використання», це для зовсім іншого парагдиму, але не менш складний, ніж великі набори даних, які потребують збереження протягом тривалого періоду. Чи можете ви розгорнути частину пріоритетних повідомлень?
Оуен

9

Я дам об'єктивну відповідь, виходячи з мого досвіду роботи з обома, я також пропускаю теорію за ними, припускаючи, що ви це вже знаєте та / або інші відповіді вже дали достатньо.

RabbitMQ : Я вибрав би це, якщо мої вимоги досить прості, щоб вирішити системну комунікацію через канали / черги, утримання та потокове передача не є вимогою. Наприклад, коли виробнича система побудувала актив, він повідомляє систему угод про налаштування контрактів тощо.

Кафка : Вимога пошуку джерел подій, головним чином, коли вам, можливо, доведеться мати справу з потоками (іноді нескінченними), величезною кількістю даних одночасно належним чином збалансованим, відтворення компенсацій для забезпечення заданого стану тощо. Майте на увазі, що ця архітектура також приносить більшу складність, оскільки вона включає такі поняття, як теми / розділи / брокери / надгробні повідомлення тощо, як важливість першого класу.


4

Єдина користь, яку я можу придумати, - це транзакційна функція, решта все можна зробити за допомогою Kafka


2
У Кафки є транзакції
OneCricketeer

2

Масштабування обох важко в розподілених відмовах, але я вважаю, що в масштабних масштабах з RabbitMQ набагато важче. Це не тривіально, щоб зрозуміти лопату, федерацію, дзеркальні дзвінки Msg, ACK, проблеми з Mem, виправлення помилок тощо. Не кажучи, що у Kafka у вас також не виникне конкретних проблем із Zookeeper тощо, але є менше рухомих частин для управління. Це означає, що ви отримуєте обмін поліглотами з RMQ, який ви не маєте з Кафкою. Якщо ви хочете потоково, використовуйте Kafka. Якщо ви хочете просту доставку пакетів IoT або подібну велику кількість, використовуйте Kafka. Йдеться про розумних споживачів. Якщо ви хочете гнучкість MSG та більш високу надійність із більшими витратами та, можливо, певною складністю, використовуйте RMQ.


Я не згоден з тим, як ви вважаєте, що RMQ має "деяку складність", як якщо б сказати, Кафка має меншу складність.
Кори Робінсон

1

Якщо у вас є складні потреби в маршрутизації і ви хочете, щоб вбудований графічний інтерфейс контролював брокера, то RabbitMQ може бути найкращим для вашої програми. В іншому випадку, якщо ви шукаєте брокера повідомлень, який би вирішив високу пропускну здатність та забезпечив доступ до історії потоку, Kafka, швидше за все, кращий вибір.


[+1] Добре пояснення, я впевнений, що ви використовували їх у своїх проектах, чи можете ви назвати деяких, які використовували будь-який з них у монтажі систем повідомлень додатків?
GingerHead

@GingerHead Ми працювали з радіокомпанією, яка використовувала RabbitMQ для їх GUI та простоти налаштування. Розробникам було здорово легко перевірити стан своїх мікросервісів. Ця ж компанія також використовувала Kafka для об'ємних потоків даних, які потребували тривалості збереження понад три дні. Якщо вам цікаво прочитати більше про відмінності між двома технологіями, ось стаття, яку я написав на тему: стаття Kafka vs. RabbitMQ .
Марія Хетфілд

0

Apache Kafka - популярний вибір для живлення трубопроводів даних. Apache kafka додав потік kafka для підтримки популярних випадків використання etl. KSQL спрощує перетворення даних у конвеєрі, готуючи повідомлення для чистої посадки в іншій системі. KSQL - це потоковий SQL-движок для Apache Kafka. Він забезпечує простий у користуванні, але потужний інтерактивний інтерфейс SQL для обробки потоків на Kafka, без необхідності писати код на мові програмування, такі як Java або Python. KSQL є масштабованим, еластичним, стійким до відмов і в режимі реального часу. Він підтримує широкий спектр потокових операцій, включаючи фільтрування даних, перетворення, агрегацію, з'єднання, віконце та сесіонізацію.

https://docs.confluent.io/current/ksql/docs/index.html

Rabbitmq не є популярним вибором для etl систем, а не для тих систем, де потрібні прості системи обміну повідомленнями з меншою пропускною здатністю.


0

Я розумію, що це давнє питання, але один із сценаріїв, коли RabbitMQ може бути кращим вибором, - це питання щодо редагування даних.

За допомогою RabbitMQ за замовчуванням, як тільки повідомлення буде спожито, воно видаляється. З Кафкою за замовчуванням повідомлення зберігаються протягом тижня. Зазвичай це встановлюється на набагато довший час або навіть ніколи не видаляти їх.

Хоча обидва продукти можуть бути налаштовані на збереження (або не збереження) повідомлень, якщо дотримання CCPA або GDPR викликає занепокоєння, я б пішов із RabbitMQ.


0

Кафка краща за RabbitMQ з точки зору пропускної здатності, довговічності, затримки. Якщо ви очікуєте менше 10 к / сек транзакцій, тоді ви можете скористатися RabbitMQ, але це теж залежить від вашої реалізації.

Я реалізував Kafka в нашому продукті, коли ми обробляли понад 70 к / сек транзакцій, а затримка в середньому становила 15 мс, з декількома шипами до 40 мс. Розмір теми становив 100 кб.

Більше даних PFB щодо KAFKA та RabbitMQ: Apache Kafka включає в себе самого брокера, який насправді є найбільш відомим і найпопулярнішим його складом, і був розроблений і чітко проданий у напрямку сценаріїв обробки потоків. На додаток до цього, Apache Kafka нещодавно додав Kafka Streams, який позиціонує себе як альтернативу потоковим платформам, таким як Apache Spark, Apache Flink, Apache Beam / Google Cloud Data Flow та Spring Cloud Flow Flow. Документація добре допомагає обговорювати випадки популярного використання, такі як відстеження активності веб-сайтів, метрики, агрегація журналів, обробка потоків, пошук подій та журнали фіксації. Один з таких випадків використання, який він описує, - це обмін повідомленнями, який може призвести до певної плутанини. Тож давайте розпакуємо це трохи та отримаємо ясність щодо того, які сценарії обміну повідомленнями найкращі для Kafka, наприклад:

Потік від А до В без складної маршрутизації, з максимальною пропускною здатністю (100 к / сек +), щонайменше один раз доставляється в розділеному порядку. Коли вашій програмі потрібен доступ до історії потоку, доставляється в розділеному порядку хоча б один раз. Kafka - це надійний магазин повідомлень, і клієнти можуть отримати "повтор" потоку подій на вимогу, на відміну від більш традиційних посередників повідомлень, де після доставки повідомлення він видаляється з черги. Потокова обробка подій Sourcing RabbitMQ - це загальне рішення для обміну повідомленнями, яке часто використовується, щоб дозволити веб-серверам швидко відповідати на запити, а не змушувати виконувати важкі для ресурсів процедури, поки користувач чекає результату. Це також добре для поширення повідомлення декільком одержувачам для споживання або для врівноваження навантажень між робітниками під високим навантаженням (20 к + / сек). Коли ваші вимоги виходять за рамки пропускної спроможності, RabbitMQ може запропонувати багато: функції надійної доставки, маршрутизації, федерації, HA, безпеки, інструменти управління та інші функції. Розглянемо кілька найкращих сценаріїв для RabbitMQ, як-от:

Додаток повинен працювати з будь-якою комбінацією існуючих протоколів, таких як AMQP 0-9-1, STOMP, MQTT, AMQP 1.0. Вам потрібен тонкозернистий контроль / гарантії послідовності на основі повідомлення (черги з мертвими літерами тощо). Однак, Kafka нещодавно додала кращу підтримку транзакцій. Ваша програма потребує різноманітності в точці до точки, запиту / відповіді та публікації / підписки на обмін повідомленнями. Комплексна маршрутизація до споживачів, інтегрування декількох служб / додатків з нетривіальною логікою маршрутизації допомога додаткового програмного забезпечення. RabbitMQ часто використовується з Apache Cassandra, коли додатку потрібен доступ до історії потоків, або з плагіном LevelDB для додатків, яким потрібна "нескінченна" черга, але жодна функція не постачається із самим RabbitMQ.


0

Коротка відповідь - "підтвердження повідомлення". RabbitMQ можна налаштувати так, щоб вимагати підтвердження повідомлення. Якщо приймач не вдається, повідомлення повертається у чергу, а інший приймач може спробувати ще раз. Хоча ви можете зробити це в Kafka за допомогою власного коду, він працює з RabbitMQ поза коробкою.

На мій досвід, якщо у вас є програма, яка має вимоги запитувати потік інформації, Kafka та KSql - найкраща ставка. Якщо вам потрібна система черги, вам краще скористатися RabbitMQ.


0

Відповідь, яка найбільше проголосує, стосується більшої частини, але я хотів би, щоб з точки зору використання високої освітленості використовувався. Чи може кафка зробити це кролик mq, відповідь - так, але чи може кролик mq робити все, що робить кафка, відповідь - ні. Тож, що кролик mq не може зробити, це роз'єднує кафку, тобто розподіляє обробку повідомлень. З цього часу прочитайте відповідь, яка найбільше голосує, і це матиме більше сенсу. Для розробки скористайтеся випадком використання, коли вам потрібно створити систему обміну повідомленнями, яка має надвисоку пропускну здатність, наприклад, "лайки" у фейсбуці, і ви вибрали для цього кролик mq. Ви створили обмін і чергу, і споживача, де всі видавці (в даному випадку користувачі FB) можуть публікувати повідомлення "подобаються". Оскільки ваша пропускна здатність висока, ви створите декілька потоків у споживача для обробки повідомлень паралельно, але ви все ще обмежені апаратною ємністю машини, на якій працює споживач. Якщо припустити, що одного споживача недостатньо для обробки всіх повідомлень - що б ви зробили? Чи можете ви додати ще одного споживача до черги - не можете цього зробити. Чи можете ви створити нову чергу і зв’язати цю чергу для обміну, який публікує повідомлення "подобається", відповідь це не тому, що ви будете обробляти повідомлення двічі. Це основна проблема, яку вирішує кафка. Це дозволяє створювати розподілені розділи (Черга в mq кролика) та розподілених споживачів, які спілкуються один з одним. Це забезпечує, що ваші повідомлення в темі отримують процеси, які споживачі розповсюджують у різних вузлах (машини). Брокери Kafka забезпечують збалансованість завантаження повідомлень у всіх розділах цієї теми. Група споживачів переконайтесь, що всі споживачі розмовляють між собою і повідомлення не обробляються двічі. Але в реальному житті ви не зіткнетеся з цією проблемою, якщо ваш термін роботи не буде серйозно високим, оскільки кролик mq також може дуже швидко обробляти дані навіть з одним споживачем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.