Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.
Устройство
Где стоит ruststream-rdkafka: между рантаймом RustStream и клиентом rust-rdkafka, один
консьюмер на подписку, один общий продюсер.
Схема текстом
- Ваш сервис: #[subscriber] обработчики-подписчики; RustStream::new(..) .with_broker(..)
- Ядро RustStream: Рантайм: диспетчер, партиции, завершение
- ruststream-rdkafka: KafkaSubscriber выдаёт KafkaMessage; KafkaPublisher и транзакционные издатели; Учёт фиксаций; EosPipeline; KafkaBroker конфигурация; KafkaTopic, KafkaTopics, KafkaPartitions
- rust-rdkafka и librdkafka: StreamConsumer по одному на подписку; FutureProducer один на соединение
- #[subscriber] обработчики-подписчики → Рантайм: диспетчер, партиции, завершение: монтируются
- Рантайм: диспетчер, партиции, завершение → KafkaSubscriber выдаёт KafkaMessage: опрашивает поток
- KafkaSubscriber выдаёт KafkaMessage → StreamConsumer по одному на подписку
- KafkaPublisher и транзакционные издатели → FutureProducer один на соединение
- StreamConsumer по одному на подписку → Кластер Kafka
- FutureProducer один на соединение → Кластер Kafka
Крейт реализует трейты брокера из ядра поверх rust-rdkafka, обёртки над librdkafka. Рантайм над ним один для всех брокеров. Всё, что относится к Kafka, лежит в этом крейте: дескрипторы, смысл ack, адрес копии для повтора и то, как фиксируется транзакция.
Каждая подписка открывает собственный консьюмер librdkafka, поэтому подписка - один участник своей
группы консьюмеров. Издатели одного соединения делят один продюсер, и открывает его первая
публикация. Транзакционный издатель открывает собственный продюсер под своим transactional.id.
Настройка, для которой в крейте нет типа, - это свойство librdkafka. Через
config можно задать любое из них, а незаданное
свойство сохраняет значение librdkafka по умолчанию.
Учёт фиксаций превращает подтверждения в сохранённые смещения.
EosPipeline фиксирует прочитанные смещения внутри
транзакции продюсера. Как части запускаются и останавливаются, показывает страница
Жизненный цикл, а путь одной записи - страница Путь.