Package kadm provides a helper Kafka admin client around a *kgo.Client.
This package is meant to cover the common use cases for dropping into an
"admin" like interface for Kafka. As with any admin client, this package
must make opinionated decisions on what to provide and what to hide. The
underlying Kafka protocol gives more detailed information in responses, or
allows more fine tuning in requests, but most of the time, these details are
unnecessary.
By virtue of making opinionated decisions, this package cannot satisfy every
need for requests and responses. If you need more control than this admin
client provides, you can use the kmsg package directly.
This package contains a lot of types, but the main two types type to know
are Client and ShardErrors. Every other type is used for inputs or outputs
to methods on the client.
The Client type is a simple small wrapper around a *kgo.Client that exists
solely to namespace methods. The ShardErrors type is a bit more complicated.
When issuing requests, under the hood some of these requests actually need
to be mapped to brokers and split, issuing different pieces of the input
request to different brokers. The *kgo.Client handles this all internally,
but (if using RequestSharded as directed), returns each response to each of
these split requests individually. Each response can fail or be successful.
This package goes one step further and merges these failures into one meta
failure, ShardErrors. Any function that returns ShardErrors is documented as
such, and if a function returns a non-nil ShardErrors, it is possible that
the returned data is actually valid and usable. If you care to, you can log
/ react to the partial failures and continue using the partial successful
result. This is in contrast to other clients, which either require to to
request individual brokers directly, or they completely hide individual
failures, or they completely fail on any individual failure.
For methods that list or describe things, this package often completely
fails responses on auth failures. If you use a method that accepts two
topics, one that you are authorized to and one that you are not, you will
not receive a partial successful response. Instead, you will receive an
AuthError. Methods that do *not* fail on auth errors are explicitly
documented as such.
Users may often find it easy to work with lists of topics or partitions.
Rather than needing to build deeply nested maps directly, this package has a
few helper types that are worth knowing:
These types are meant to be easy to build and use, and can be used as the
starting point for other types.
Many functions in this package are variadic and return either a map or a
list of responses, and you may only use one element as input and are only
interested in one element of output. This package provides the following
functions to help:
The intended use case of these is something like `kadm.AnyE(kadm.CreateTopics(..., "my-one-topic"))`,
such that you can immediately get the response for the one topic you are
creating.