11.06
Гарантии доставки 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`еще контент в этом сообществе
еще контент в этом соообществе
11.06
войдите, чтобы увидеть
и подписаться на интересных профи