Skip to main content
On this page

Conduktor concepts

For an alphabetical list of all our terminology, check out Conduktor glossary.

Gateway

Conduktor Gateway is deployed between your client applications and existing Kafka clusters. As it's Kafka protocol compliant, there are minimal adjustments required for clients other than pointing to a new bootstrap server.

Conduktor Gateway

Conduktor Gateway extends Kafka to provide new functionalities with different techniques:

  • Interceptors are pluggable components that augment Kafka by intercepting specific requests of the Kafka protocol and applying operations to it.
  • Core features like Authentication, Virtual clusters, Logical Topics and Failover are features that blend much more deeply the Kafka protocol. For that reason, we decided they should be experienced as dedicated features for simplicity and ease of understanding (as opposed to pluggable Interceptors).

Most core features and all interceptors can be configured using the Gateway HTTP API.

Interceptors

Conduktor Gateway has a significant number of Interceptors available to satisfy many different use-cases. Check out Interceptor Catalog for details.

A few examples:

  • Full-body or field-level Encryption and Decryption
  • Reject (during produce) or Skip (during consume) records that don't match business data quality rules
  • Enforce producer configurations such as acks or compression
  • Enforce or override configurations during a CreateTopic request, such as replication factor or naming convention

To deploy an Interceptor, you need to prepare its configuration. Configuring and deploying an interceptor is a bit similar to what you'd do with Kafka Connect Connectors.

Here's an example for an interceptor that will block the creation of topics with more than 6 partitions:

POST /admin/interceptors/v1/interceptor/enforce-partition-limit
{
"pluginClass": "io.conduktor.gateway.interceptor.safeguard.CreateTopicPolicyPlugin",
"priority": 100,
"config": {
"topic": ".*",
"numPartition": {
"min": 1,
"max": 6,
"action": "BLOCK"
}
}
}

Interceptors also combine with each other to create very powerful interactions and solve many interesting use-cases in different ways.

The most basic possibility is to chain them together so that each interceptor performs its action sequentially and independently, and pass its result to the next.

The order of execution is determined by the priority of each interceptor. Lower numbers gets executed first.

More advanced behaviors can also be configured such as Scoping and Overriding. They are presented in the detailed Interceptor Concepts page.