#apache-kafka #messaging #distributed #apache-pulsar
Вопрос:
В документации Apache Pulsar у нас есть:
Учитывая, что у нас есть производитель, который производит только одну разделенную тему и две эксклюзивные подписки (эксклюзивная подписка гарантирует заказ в теме) для такой темы! Будут ли сообщения использоваться по порядку в каждой подписке?
Ответ №1:
Это зависит от вашего режима маршрутизации.
Если вы используете режим разделения на отдельные части и не указываете ключ в своих сообщениях, все сообщения от вашего единственного производителя будут отправлены в один и тот же раздел и будут в порядке. Но это, вероятно, не то, что вам нужно, так как вы теряете преимущество использования разделенной темы.
Если вы используете режим одиночной или круглой части (по умолчанию) и указываете ключ в своих сообщениях, все сообщения с одним и тем же ключом будут помещены в один раздел и будут в порядке.
В противном случае нет никаких гарантий упорядочения по разделам. Сообщения упорядочены только внутри данного раздела. Из документа : «Разделенная тема фактически реализована как N внутренних тем, где N-количество разделов». Таким образом, подписка на разделенную тему-это то же самое, что подписка на несколько тем. В этом посте есть несколько тестов для подписок на несколько тем https://jack-vanlightly.com/blog/2019/9/4/a-look-at-multi-topic-subscriptions-with-apache-pulsar это показывает, что вы не можете полагаться на глобальный порядок в разделенных/нескольких темах.
Ваши две подписки независимы и будут получать все сообщения с гарантиями заказа, описанными выше. Обратите внимание, что если заказ по ключу будет работать для вашего варианта использования, вы можете использовать подписку на совместное использование ключей
Комментарии:
1. Спасибо за ваше объяснение! Мне придется поработать со своим подходом, чтобы получить желаемое поведение 🙂