Skip to main content

KafkaAdmin

Struct KafkaAdmin 

Source
pub struct KafkaAdmin { /* private fields */ }
Expand description

Client for Kafka admin operations.

KafkaAdmin is an async client for cluster, topic, group, config, feature, and SCRAM credential operations. Construct it either from an AdminConfig when you need explicit configuration, or through KafkaClient::admin for the builder-style API.

use kafkit_client::{AdminConfig, KafkaAdmin, NewTopic};

let admin = KafkaAdmin::connect(AdminConfig::new("localhost:9092")).await?;

admin.create_topics([NewTopic::new("orders", 3, 1)]).await?;
let topics = admin.list_topics().await?;

Implementations§

Source§

impl KafkaAdmin

Source

pub async fn connect(config: AdminConfig) -> Result<Self>

Connects to Kafka and returns an admin client.

This performs a lightweight bootstrap connection so configuration, security settings, and broker reachability fail before the client is returned.

Source

pub async fn create_topics<I>(&self, topics: I) -> Result<()>
where I: IntoIterator<Item = NewTopic>,

Creates one or more topics.

Existing topics are treated as success, matching the common create-if-missing setup flow. Passing an empty iterator is a no-op.

Source

pub async fn delete_topics<I, S>(&self, topics: I) -> Result<()>
where I: IntoIterator<Item = S>, S: Into<String>,

Deletes one or more topics by name.

Passing an empty iterator is a no-op. Kafka must have topic deletion enabled for the broker to complete the operation.

Source

pub async fn create_partitions<I, S>(&self, partitions: I) -> Result<()>
where I: IntoIterator<Item = (S, NewPartitions)>, S: Into<String>,

Increases partition counts for one or more topics.

Each item is a (topic_name, NewPartitions) pair. Kafka only supports increasing the total partition count; it cannot shrink a topic.

Source

pub async fn list_topics(&self) -> Result<Vec<TopicListing>>

Lists topics known to the cluster.

The returned list is sorted by topic name.

Source

pub async fn describe_topics<I, S>( &self, topics: I, ) -> Result<Vec<TopicDescription>>
where I: IntoIterator<Item = S>, S: Into<String>,

Describes selected topics.

The returned descriptions preserve the input topic order. Passing an empty iterator returns an empty vector.

Source

pub async fn describe_cluster(&self) -> Result<ClusterDescription>

Describes cluster ID, controller, and broker endpoints.

Source

pub async fn describe_log_dirs<I>( &self, brokers: I, topics: Option<&[TopicPartition]>, ) -> Result<Vec<BrokerLogDirs>>

Describes broker log directories and replica log sizes.

Kafka serves this API from each broker. Pass broker metadata returned by KafkaAdmin::describe_cluster. When topics is None, Kafka returns all topic-partitions hosted by each broker.

Source

pub async fn list_groups(&self) -> Result<Vec<ConsumerGroupListing>>

Lists consumer groups known to the cluster.

The returned list is sorted by group ID.

Source

pub async fn list_consumer_groups(&self) -> Result<Vec<ConsumerGroupListing>>

Source

pub async fn describe_groups<I, S>( &self, groups: I, ) -> Result<Vec<GroupDescription>>
where I: IntoIterator<Item = S>, S: Into<String>,

Describes groups, routing each group to the appropriate Kafka describe API.

Newer brokers report group type in ListGroups; this method uses that metadata to describe consumer, share, and classic groups. The returned descriptions preserve the input group order.

Source

pub async fn describe_consumer_groups<I, S>( &self, groups: I, ) -> Result<Vec<ConsumerGroupDescription>>
where I: IntoIterator<Item = S>, S: Into<String>,

Describes KIP-848 consumer groups.

Use KafkaAdmin::describe_groups when the group type is not known.

Source

pub async fn describe_classic_groups<I, S>( &self, groups: I, ) -> Result<Vec<ConsumerGroupDescription>>
where I: IntoIterator<Item = S>, S: Into<String>,

Describes classic consumer groups with Kafka’s legacy describe-groups API.

Use KafkaAdmin::describe_groups when the group type is not known.

Source

pub async fn describe_share_groups<I, S>( &self, groups: I, ) -> Result<Vec<ConsumerGroupDescription>>
where I: IntoIterator<Item = S>, S: Into<String>,

Describes Kafka share groups.

Use KafkaAdmin::describe_groups when the group type is not known.

Source

pub async fn delete_groups<I, S>(&self, groups: I) -> Result<()>
where I: IntoIterator<Item = S>, S: Into<String>,

Deletes one or more groups by ID.

Passing an empty iterator is a no-op.

Source

pub async fn delete_consumer_groups<I, S>(&self, groups: I) -> Result<()>
where I: IntoIterator<Item = S>, S: Into<String>,

Source

pub async fn describe_acls( &self, filter: AclBindingFilter, ) -> Result<Vec<AclBinding>>

Describes ACL bindings matching a filter.

The shape mirrors Kafka’s Admin#describeAcls(AclBindingFilter).

Source

pub async fn create_acls<I>(&self, acls: I) -> Result<()>
where I: IntoIterator<Item = AclBinding>,

Creates ACL bindings.

The shape mirrors Kafka’s Admin#createAcls(Collection<AclBinding>).

Source

pub async fn delete_acls<I>(&self, filters: I) -> Result<Vec<DeleteAclsResult>>
where I: IntoIterator<Item = AclBindingFilter>,

Deletes ACL bindings matching each filter.

The shape mirrors Kafka’s Admin#deleteAcls(Collection<AclBindingFilter>).

Source

pub async fn describe_configs<I>( &self, resources: I, ) -> Result<Vec<ConfigResourceConfig>>
where I: IntoIterator<Item = ConfigResource>,

Describes configuration entries for Kafka resources.

use kafkit_client::ConfigResource;

let configs = admin
    .describe_configs([ConfigResource::topic("orders")])
    .await?;

if let Some(retention) = configs[0].entry("retention.ms") {
    println!("retention: {:?}", retention.value);
}
Source

pub async fn incremental_alter_configs<I>(&self, resources: I) -> Result<()>

Applies incremental config changes to Kafka resources.

use kafkit_client::{AlterConfigOp, ConfigResource};

admin
    .incremental_alter_configs([(
        ConfigResource::topic("orders"),
        vec![AlterConfigOp::set("retention.ms", "604800000")],
    )])
    .await?;
Source

pub async fn upsert_scram_credential( &self, user: impl Into<String>, mechanism: SaslMechanism, password: impl AsRef<[u8]>, ) -> Result<()>

Creates or replaces a SCRAM credential for a user.

mechanism must be SaslMechanism::ScramSha256 or SaslMechanism::ScramSha512. Use KafkaAdmin::upsert_scram_credential_with_iterations to override the default iteration count.

Source

pub async fn upsert_scram_credential_with_iterations( &self, user: impl Into<String>, mechanism: SaslMechanism, password: impl AsRef<[u8]>, iterations: i32, ) -> Result<()>

Creates or replaces a SCRAM credential with an explicit iteration count.

Source

pub fn config(&self) -> &AdminConfig

Returns the configuration used by this admin client.

Source

pub async fn finalized_feature_levels(&self) -> Result<Vec<BrokerFeatureLevel>>

Returns finalized broker feature levels visible from a bootstrap broker.

Source

pub async fn update_features<I>(&self, updates: I) -> Result<()>
where I: IntoIterator<Item = FeatureUpdate>,

Updates finalized broker feature levels.

Feature updates are cluster-level operations. Consider calling KafkaAdmin::validate_feature_updates first when supported by the broker.

Source

pub async fn validate_feature_updates<I>(&self, updates: I) -> Result<()>
where I: IntoIterator<Item = FeatureUpdate>,

Validates finalized broker feature updates without applying them.

Trait Implementations§

Source§

impl Clone for KafkaAdmin

Source§

fn clone(&self) -> KafkaAdmin

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for KafkaAdmin

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more