#include <userver/kafka/consumer_scope.hpp>
RAII class that used as interface for Apache Kafka Consumer interaction and proper lifetime management.
Its main purpose is to stop the message polling in user component (that holds ConsumerScope) destructor, because ConsumerScope::Callback often captures this
pointer on user component.
Common usage:
ConsumerScope holds reference to kafka::impl::Consumer that actually represents the Apache Kafka Balanced Consumer.
It exposes the API for asynchronous message batches processing that is polled from the subscribed topics partitions.
Consumer periodically polls the message batches from the subscribed topics partitions and invokes processing callback on each batch.
Also, Consumer maintains per topic statistics including the broker connection errors.
group_id
.Definition at line 68 of file consumer_scope.hpp.
Public Types | |
using | Callback = std::function<void(MessageBatchView)> |
Callback that is invoked on each polled message batch. | |
Public Member Functions | |
~ConsumerScope () | |
Stops the consumer (if not yet stopped). | |
ConsumerScope (ConsumerScope &&) noexcept=delete | |
ConsumerScope & | operator= (ConsumerScope &&) noexcept=delete |
void | Start (Callback callback) |
Subscribes for configured topics and starts the consumer polling process. | |
void | Stop () noexcept |
Revokes all topic partition consumer was subscribed on. Also closes the consumer, leaving the consumer balanced group. | |
void | AsyncCommit () |
Schedules the current assignment offsets commitment task. Intended to be called after each message batch processing cycle (but not necessarily). | |
OffsetRange | GetOffsetRange (const std::string &topic, std::uint32_t partition, std::optional< std::chrono::milliseconds > timeout=std::nullopt) const |
Retrieves the lowest and highest offsets for the specified topic and partition. | |
std::vector< std::uint32_t > | GetPartitionIds (const std::string &topic, std::optional< std::chrono::milliseconds > timeout=std::nullopt) const |
Retrieves the partition IDs for the specified topic. | |
using kafka::ConsumerScope::Callback = std::function<void(MessageBatchView)> |
Callback that is invoked on each polled message batch.
Definition at line 74 of file consumer_scope.hpp.
void kafka::ConsumerScope::AsyncCommit | ( | ) |
Schedules the current assignment offsets commitment task. Intended to be called after each message batch processing cycle (but not necessarily).
OffsetRange kafka::ConsumerScope::GetOffsetRange | ( | const std::string & | topic, |
std::uint32_t | partition, | ||
std::optional< std::chrono::milliseconds > | timeout = std::nullopt ) const |
Retrieves the lowest and highest offsets for the specified topic and partition.
OffsetRangeException | if offsets could not be retrieved |
topic | The name of the topic. |
partition | The partition number of the topic. |
std::vector< std::uint32_t > kafka::ConsumerScope::GetPartitionIds | ( | const std::string & | topic, |
std::optional< std::chrono::milliseconds > | timeout = std::nullopt ) const |
Retrieves the partition IDs for the specified topic.
GetMetadataException | if failed to fetch metadata |
TopicNotFoundException | if topic not found |
topic | The name of the topic. |
void kafka::ConsumerScope::Start | ( | Callback | callback | ) |
Subscribes for configured topics and starts the consumer polling process.
callback
throws an exception, entire message batch (also with successfully processed messages) come again, until callback succeeds max_callback_duration
time. Otherwise, consumer may stop consuming the message for unpredictable amount of time.
|
noexcept |
Revokes all topic partition consumer was subscribed on. Also closes the consumer, leaving the consumer balanced group.
Called in the destructor of ConsumerScope automatically.
Can be called in the beginning of your destructor if some other actions in that destructor prevent the callback from functioning correctly.
After ConsumerScope::Stop call, subscribed topics partitions are distributed between other consumers with the same group_id
.