librdkafka
The Apache Kafka C/C++ client library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
RdKafka::Handle Class Referenceabstract

Base handle, super class for specific clients. More...

#include <rdkafkacpp.h>

Inheritance diagram for RdKafka::Handle:

Public Member Functions

virtual const std::string name () const =0
 
virtual const std::string memberid () const =0
 Returns the client's broker-assigned group member id. More...
 
virtual int poll (int timeout_ms)=0
 Polls the provided kafka handle for events. More...
 
virtual int outq_len ()=0
 Returns the current out queue length. More...
 
virtual ErrorCode metadata (bool all_topics, const Topic *only_rkt, Metadata **metadatap, int timeout_ms)=0
 Request Metadata from broker. More...
 
virtual ErrorCode pause (std::vector< TopicPartition * > &partitions)=0
 Pause producing or consumption for the provided list of partitions. More...
 
virtual ErrorCode resume (std::vector< TopicPartition * > &partitions)=0
 Resume producing or consumption for the provided list of partitions. More...
 
virtual ErrorCode query_watermark_offsets (const std::string &topic, int32_t partition, int64_t *low, int64_t *high, int timeout_ms)=0
 Query broker for low (oldest/beginning) and high (newest/end) offsets for partition. More...
 
virtual ErrorCode get_watermark_offsets (const std::string &topic, int32_t partition, int64_t *low, int64_t *high)=0
 Get last known low (oldest/beginning) and high (newest/end) offsets for partition. More...
 
virtual ErrorCode offsetsForTimes (std::vector< TopicPartition * > &offsets, int timeout_ms)=0
 Look up the offsets for the given partitions by timestamp. More...
 
virtual Queueget_partition_queue (const TopicPartition *partition)=0
 Retrieve queue for a given partition. More...
 
virtual ErrorCode set_log_queue (Queue *queue)=0
 Forward librdkafka logs (and debug) to the specified queue for serving with one of the ..poll() calls. More...
 
virtual void yield ()=0
 Cancels the current callback dispatcher (Producer::poll(), Consumer::poll(), KafkaConsumer::consume(), etc). More...
 
virtual const std::string clusterid (int timeout_ms)=0
 Returns the ClusterId as reported in broker metadata. More...
 
virtual struct rd_kafka_s * c_ptr ()=0
 Returns the underlying librdkafka C rd_kafka_t handle. More...
 

Detailed Description

Base handle, super class for specific clients.

Member Function Documentation

virtual const std::string RdKafka::Handle::name ( ) const
pure virtual
Returns
the name of the handle
virtual const std::string RdKafka::Handle::memberid ( ) const
pure virtual

Returns the client's broker-assigned group member id.

Remarks
This currently requires the high-level KafkaConsumer
Returns
Last assigned member id, or empty string if not currently a group member.
virtual int RdKafka::Handle::poll ( int  timeout_ms)
pure virtual

Polls the provided kafka handle for events.

Events will trigger application provided callbacks to be called.

The timeout_ms argument specifies the maximum amount of time (in milliseconds) that the call will block waiting for events. For non-blocking calls, provide 0 as timeout_ms. To wait indefinately for events, provide -1.

Events:

  • delivery report callbacks (if an RdKafka::DeliveryCb is configured) [producer]
  • event callbacks (if an RdKafka::EventCb is configured) [producer & consumer]
Remarks
An application should make sure to call poll() at regular intervals to serve any queued callbacks waiting to be called.
Warning
This method MUST NOT be used with the RdKafka::KafkaConsumer, use its RdKafka::KafkaConsumer::consume() instead.
Returns
the number of events served.
virtual int RdKafka::Handle::outq_len ( )
pure virtual

Returns the current out queue length.

The out queue contains messages and requests waiting to be sent to, or acknowledged by, the broker.

virtual ErrorCode RdKafka::Handle::metadata ( bool  all_topics,
const Topic only_rkt,
Metadata **  metadatap,
int  timeout_ms 
)
pure virtual

Request Metadata from broker.

Parameters: all_topics - if non-zero: request info about all topics in cluster, if zero: only request info about locally known topics. only_rkt - only request info about this topic metadatap - pointer to hold metadata result. The *metadatap pointer must be released with delete. timeout_ms - maximum response time before failing.

Returns
RdKafka::ERR_NO_ERROR on success (in which case *metadatap will be set), else RdKafka::ERR__TIMED_OUT on timeout or other error code on error.
virtual ErrorCode RdKafka::Handle::pause ( std::vector< TopicPartition * > &  partitions)
pure virtual

Pause producing or consumption for the provided list of partitions.

Success or error is returned per-partition in the partitions list.

Returns
ErrorCode::NO_ERROR
See also
resume()
virtual ErrorCode RdKafka::Handle::resume ( std::vector< TopicPartition * > &  partitions)
pure virtual

Resume producing or consumption for the provided list of partitions.

Success or error is returned per-partition in the partitions list.

Returns
ErrorCode::NO_ERROR
See also
pause()
virtual ErrorCode RdKafka::Handle::query_watermark_offsets ( const std::string &  topic,
int32_t  partition,
int64_t *  low,
int64_t *  high,
int  timeout_ms 
)
pure virtual

Query broker for low (oldest/beginning) and high (newest/end) offsets for partition.

Offsets are returned in *low and *high respectively.

Returns
RdKafka::ERR_NO_ERROR on success or an error code on failure.
virtual ErrorCode RdKafka::Handle::get_watermark_offsets ( const std::string &  topic,
int32_t  partition,
int64_t *  low,
int64_t *  high 
)
pure virtual

Get last known low (oldest/beginning) and high (newest/end) offsets for partition.

The low offset is updated periodically (if statistics.interval.ms is set) while the high offset is updated on each fetched message set from the broker.

If there is no cached offset (either low or high, or both) then OFFSET_INVALID will be returned for the respective offset.

Offsets are returned in *low and *high respectively.

Returns
RdKafka::ERR_NO_ERROR on success or an error code on failure.
Remarks
Shall only be used with an active consumer instance.
virtual ErrorCode RdKafka::Handle::offsetsForTimes ( std::vector< TopicPartition * > &  offsets,
int  timeout_ms 
)
pure virtual

Look up the offsets for the given partitions by timestamp.

The returned offset for each partition is the earliest offset whose timestamp is greater than or equal to the given timestamp in the corresponding partition.

The timestamps to query are represented as offset in offsets on input, and offset() will return the closest earlier offset for the timestamp on output.

The function will block for at most timeout_ms milliseconds.

Remarks
Duplicate Topic+Partitions are not supported.
Errors are also returned per TopicPartition, see err()
Returns
an error code for general errors, else RdKafka::ERR_NO_ERROR in which case per-partition errors might be set.
virtual Queue* RdKafka::Handle::get_partition_queue ( const TopicPartition partition)
pure virtual

Retrieve queue for a given partition.

Returns
The fetch queue for the given partition if successful. Else, NULL is returned.
Remarks
This function only works on consumers.
virtual ErrorCode RdKafka::Handle::set_log_queue ( Queue queue)
pure virtual

Forward librdkafka logs (and debug) to the specified queue for serving with one of the ..poll() calls.

This allows an application to serve log callbacks (log_cb) in its thread of choice.

Parameters
queueQueue to forward logs to. If the value is NULL the logs are forwarded to the main queue.
Remarks
The configuration property log.queue MUST also be set to true.
librdkafka maintains its own reference to the provided queue.
Returns
ERR_NO_ERROR on success or an error code on error.
virtual void RdKafka::Handle::yield ( )
pure virtual

Cancels the current callback dispatcher (Producer::poll(), Consumer::poll(), KafkaConsumer::consume(), etc).

A callback may use this to force an immediate return to the calling code (caller of e.g. ..::poll()) without processing any further events.

Remarks
This function MUST ONLY be called from within a librdkafka callback.
virtual const std::string RdKafka::Handle::clusterid ( int  timeout_ms)
pure virtual

Returns the ClusterId as reported in broker metadata.

Parameters
timeout_msIf there is no cached value from metadata retrieval then this specifies the maximum amount of time (in milliseconds) the call will block waiting for metadata to be retrieved. Use 0 for non-blocking calls.
Remarks
Requires broker version >=0.10.0 and api.version.request=true.
Returns
Last cached ClusterId, or empty string if no ClusterId could be retrieved in the allotted timespan.
virtual struct rd_kafka_s* RdKafka::Handle::c_ptr ( )
pure virtual

Returns the underlying librdkafka C rd_kafka_t handle.

Warning
Calling the C API on this handle is not recommended and there is no official support for it, but for cases where the C++ does not provide the proper functionality this C handle can be used to interact directly with the core librdkafka API.
Remarks
The lifetime of the returned pointer is the same as the Topic object this method is called on.
Include <rdkafka/rdkafka.h> prior to including <rdkafka/rdkafkacpp.h>
Returns
rd_kafka_t*

The documentation for this class was generated from the following file: