Гарантии доставки Kafka

Один из чаще всего задаваемых вопросов, когда рассказываешь про очереди - это, какие гарантии доставки поддерживает. Что это вообще такое? AtLeastOnce - сообщение будет доставлено хотя бы раз. AtMostOnce - сообщение будет доставлено не больше одного раза, но может и не будет доставлено ExactlyOnce - сообщение будет доставлено ровно один раз

Как это у kafka: AtMostOnce - используется , когда скорость важнее надежности, например для логов и метрик. Просто producer без ожидания ack (т е подвтерждения от брокера , что сообщение дошло) AtLeastOnce - producer ждет ack от брокера когда отправляет сообещение ExactlyOnce - как обычно самое сложное. producer должен включить индепотентность (enable.idempotence=true), чтобы сообщения не дублировались, ждать akk, указать идентификатор . И должен каждое сообщение отправлять в транзакции. `var producerConfig = new ProducerConfig { EnableIdempotence = true, TransactionalId = "my-eos-producer" Acks = Acks.All }; using var producer = new ProducerBuilder(producerConfig).Build(); producer.InitTransactions(TimeSpan.FromSeconds(10)); try { producer.BeginTransaction(); producer.Produce("eos-topic", message1); producer.Produce("eos-topic", message2); producer.CommitTransaction(TimeSpan.FromSeconds(10)); } catch (KafkaException ex) { Console.WriteLine($"Transaction failed: {ex.Message}"); producer.AbortTransaction(); }

(код для описания, не проверял его в ide)

consumer должен читать с IsolationLevel = IsolationLevel.ReadCommitted. Это уровень изоляции их у кафки всего два, второй ReadUncommited. По факту означает, что консьюмер или читаветвсе сообщения какие есть или только от закоммиченных транзакий.

Сложна... И по факту обычно таким не пользуются. Чаще всего используют AtLeastOnce, ждут akk у producer, а у consumer убирают autocommit. Т е прочитал консьюмер 10 сообщений обработал и только потом оффсет сдвинулся. А если он упал, то оффсет остался на месте и сообщения будут читаться снова

#middle #senior`
repost

16

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь