// Metadata created by nebel

[id="kafka-connect_{context}"]
= Stream data to external systems with Kafka Connect converters 

[role="_abstract"]
You can use {registry} with Apache Kafka Connect to stream data between Kafka and external systems. Using Kafka Connect, you can define connectors for different systems to move large volumes of data into and out of Kafka-based systems. 

.{registry} and Kafka Connect architecture
ifdef::apicurio-registry,rh-service-registry[]
image::images/getting-started/registry-connect-architecture.png[Registry and Kafka Connect architecture]
endif::[]
ifdef::rh-openshift-sr[]
image::../_images/introduction/registry-connect-architecture.png[Registry and Kafka Connect architecture]
endif::[]

{registry} provides the following features for Kafka Connect:

* Storage for Kafka Connect schemas
* Kafka Connect converters for Apache Avro and JSON Schema
* Core Registry API to manage schemas

You can use the Avro and JSON Schema converters to map Kafka Connect schemas into Avro or JSON schemas. These schemas can then serialize message keys and values into the compact Avro binary format or human-readable JSON format. The converted JSON is less verbose because the messages do not contain the schema information, only the schema ID.

{registry} can manage and track the Avro and JSON schemas used in the Kafka topics. Because the schemas are stored in {registry} and decoupled from the message content, each message must only include a tiny schema identifier. For an I/O bound system like Kafka, this means more total throughput for producers and consumers.

The Avro and JSON Schema serializers and deserializers (SerDes) provided by {registry} are used by Kafka producers and consumers in this use case. Kafka consumer applications that you write to consume change events can use the Avro or JSON SerDes to deserialize these events. You can install the {registry} SerDes in any Kafka-based system and use them along with Kafka Connect, or with a Kafka Connect-based system such as Debezium.

[role="_additional-resources"]
.Additional resources

ifdef::rh-service-registry[]
* link:https://access.redhat.com/documentation/en-us/red_hat_integration/2023.q2/html-single/debezium_user_guide/index#configuring-debezium-connectors-to-use-avro-serialization[Configuring Debezium to use Avro serialization and {registry}] 
endif::[] 
ifdef::apicurio-registry[]
* link:https://debezium.io/documentation/reference/stable/configuration/avro.html[Configuring Debezium to use Avro serialization and {registry}]
endif::[] 
* link:https://github.com/Apicurio/apicurio-registry/tree/{registry-version}.x/examples/event-driven-architecture[Example of using Debezium to monitor the PostgreSQL database used by Apicurio Registry]
* link:https://kafka.apache.org/documentation/#connect[Apache Kafka Connect documentation]