{"id":23104,"date":"2024-08-13T07:03:45","date_gmt":"2024-08-13T00:03:45","guid":{"rendered":"https:\/\/huongdanjava.com\/?p=23104"},"modified":"2024-08-13T07:03:45","modified_gmt":"2024-08-13T00:03:45","slug":"an-introduction-to-apache-kafka-connect","status":"publish","type":"post","link":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html","title":{"rendered":"An introduction to Apache Kafka Connect"},"content":{"rendered":"<p><a href=\"https:\/\/kafka.apache.org\/documentation\/#connect\" target=\"_blank\" rel=\"noopener\">Apache Kafka Connect<\/a> is an Apache Kafka tool for data integration, which helps us stream data between different data systems with Apache Kafka. It can help you ingest all data from a database or collect metrics information of your application into an Apache Kafka topic, making this data available for streaming to other data systems with low latency. In this tutorial, I will introduce you to the basic knowledge of Apache Kafka Connect so that you can use it in your applications!<\/p>\n<h3>Install Apache Kafka Connect<\/h3>\n<p>The first thing I need to tell you is that Apache Kafka Connect is already integrated and built with Apache Kafka, so once you have downloaded and installed Apache Kafka, you do not need to download Apache Kafka Connect again.<\/p>\n<p>Similar to Apache Kafka, Apache Kafka Connect also has a configuration file called connect-distributed.properties, located in the config directory of Apache Kafka. If you want to edit any configuration, you can edit this file!<\/p>\n<p>We can start Apache Connect using the following command:<\/p>\n<pre class=\"lang:java decode:true \">.\/bin\/connect-distributed.sh .\/config\/connect-distributed.properties<\/pre>\n<p>The result when I run the above command is as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23106 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-1.png\" alt=\"\" width=\"700\" height=\"489\" \/><\/p>\n<p>Apache Kafka Connect will run on port 8083 by default and the result when I check the version of Apache Kafka Connect using the URL <a href=\"http:\/\/localhost:8083\" target=\"_blank\" rel=\"noopener\">http:\/\/localhost:8083<\/a> is as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23107 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-2.png\" alt=\"\" width=\"700\" height=\"367\" \/><\/p>\n<p>So we have successfully started Apache Kafka Connect!<\/p>\n<h3>Basic Concepts of Apache Kafka Connect<\/h3>\n<p>To work with Apache Kafka Connect, you need to grasp the following basic concepts:<\/p>\n<ul>\n<li>Connectors: The main object that connects and streams data between data systems and Apache Kafka. We have 2 types of Connectors: Source Connector and Sink Connector. The Source Connector is the data system that emits data and the Sink Connector is the data system that receives this data!<\/li>\n<\/ul>\n<p>You can visualize how Apache Kafka Connect works in the following figure:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23112 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-7.png\" alt=\"\" width=\"700\" height=\"102\" \/><\/p>\n<ul>\n<li>Tasks: Used by Connectors to stream data to and from Apache Kafka.<\/li>\n<li>Workers: Running processes used by Connectors to execute Tasks.<\/li>\n<li>Converters: Code used to translate data between Apache Kafka Connect and data systems<\/li>\n<li>Transforms: You can add logic code to filter, transform data before data is sent to Connectors or before Connectors send data.<\/li>\n<li>Dead Letter Queue: Used in case of data processing errors.<\/li>\n<\/ul>\n<p>Connectors will be installed into Apache Kafka Connect using Connector plugins. By default, Apache Kafka Connect supports the following Connector plugins:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23108 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-3.png\" alt=\"\" width=\"700\" height=\"367\" \/><\/p>\n<p>You can download and install other Connector plugins here <a href=\"https:\/\/www.confluent.io\/hub\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.confluent.io\/hub\/<\/a>.<\/p>\n<h3>Install the Apache Kafka Connect Connector plugin<\/h3>\n<p>I will guide you on how to install the File Chunk Source Connector, a connector that helps us split any file into chunks, and then copy these chunks into an Apache Kafka topic. You can download this plugin from <a href=\"https:\/\/www.confluent.io\/hub\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.confluent.io\/hub\/<\/a> as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23109 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-4.png\" alt=\"\" width=\"700\" height=\"589\" \/><\/p>\n<p>To install on your local machine, you can download the installation file in the &#8220;Self-Hosted&#8221; section!<\/p>\n<p>After downloading and unzipping the installation file of the File Chunk Source Connector plugin, create a new connectors folder in the Apache Kafka installation folder and copy the unzipped folder of the File Chunk Source Connector plugin into:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23110 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-5.png\" alt=\"\" width=\"700\" height=\"441\" \/><\/p>\n<p>Next, you need to configure this connectors directory as the plugins directory of Apache Kafka Connect, by updating the <strong>plugin.path<\/strong> property in your connect-distributed.properties file, as follows:<\/p>\n<pre class=\"lang:java decode:true \">plugin.path=\/Users\/khanhnguyenj\/Downloads\/kafka_2.13-3.8.0\/connectors<\/pre>\n<p>You can add paths to multiple directories if you want!<\/p>\n<p>Now restart Apache Kafka Connect and go to <a href=\"http:\/\/localhost:8083\/connector-plugins\" target=\"_blank\" rel=\"noopener\">http:\/\/localhost:8083\/connector-plugins<\/a>, you will see the following result:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23111 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-6.png\" alt=\"\" width=\"700\" height=\"400\" \/><\/p>\n<p>So we have successfully installed the File Chunk Source Connector plugin!<\/p>\n<p><strong>To see how Apache Kafka Connect works<\/strong>, I will also install the File Chunk Sink Connector:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23113 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-8.png\" alt=\"\" width=\"700\" height=\"546\" \/><\/p>\n<p>This File Chunk Sink Connector will subscribe to the topic containing the contents of the files in chunks form published by the File Chunk Source Connector above, then recreate the original file in another directory.<\/p>\n<p>Next, I will create a new topic in Apache Kafka to receive the data published by the File Chunk Source Connector and also let the File Chunk Sink Connector subscribe to receive the data:<\/p>\n<pre class=\"lang:java decode:true \">.\/bin\/kafka-topics.sh --create --topic file-chunk-topic --partitions 1 --bootstrap-server localhost:9092<\/pre>\n<p>Above, we have only installed the Connector plugins, so that the File Chunk Source Connector and File Chunk Sink Connector can work, we need to install them into Apache Kafka Connect.<\/p>\n<p><strong>We will submit a POST request to <a href=\"http:\/\/localhost:8083\/connectors\" target=\"_blank\" rel=\"noopener\">http:\/\/localhost:8083\/connectors<\/a> to install a Connector with Apache Kafka Connect<\/strong>.<\/p>\n<p>The body content of this POST request will be the configuration for that Connector.<\/p>\n<p>For the File Chunk Source Connector, you can submit a POST request with the following configuration content:<\/p>\n<pre class=\"lang:java decode:true \">{\r\n    \"name\": \"uploader\",\r\n    \"config\": {\r\n        \"topic\": \"file-chunk-topic\",\r\n        \"connector.class\": \"com.github.markteehan.file.chunk.source.ChunkSourceConnector\",\r\n        \"files.dir\": \"\/tmp\/upload\",\r\n        \"input.file.pattern\": \".*\",\r\n        \"tasks.max\": \"1\",\r\n        \"file.minimum.age.ms\": \"2000\",\r\n        \"binary.chunk.size.bytes\": \"300000\",\r\n        \"cleanup.policy.maintain.relative.path\": \"true\",\r\n        \"input.path.walk.recursively\": \"true\",\r\n        \"finished.file.retention.mins\": \"10\",\r\n        \"topic.partitions\": \"1\"\r\n    }\r\n}<\/pre>\n<p>I will not go into detail about the above configurations, just to put it simply, I have configured this File Chunk Source Connector to read the contents of all files in the \/tmp\/upload directory, split the contents of these files into small chunks and publish them in the &#8220;file-chunk-topic&#8221; topic!<\/p>\n<p>If you want to know more details about the above configurations, you can read more <a href=\"https:\/\/github.com\/streamsend-io\/file-chunk-connectors\" target=\"_blank\" rel=\"noopener\">here<\/a>!<\/p>\n<p>For the File Chunk Sink Connector, you can also submit a POST request with the following content:<\/p>\n<pre class=\"lang:java decode:true \">{\r\n    \"name\": \"downloader\",\r\n    \"config\": {\r\n        \"topics\": \"file-chunk-topic\",\r\n        \"connector.class\": \"com.github.markteehan.file.chunk.sink.ChunkSinkConnector\",\r\n        \"tasks.max\": \"1\",\r\n        \"files.dir\": \"\/tmp\/download\",\r\n        \"binary.chunk.size.bytes\": \"300000\",\r\n        \"auto.register.schemas\": \"false\",\r\n        \"schema.ignore\": \"true\",\r\n        \"schema.generation.enabled\": \"false\",\r\n        \"key.converter.schemas.enable\": \"false\",\r\n        \"value.converter.schemas.enable\": \"false\",\r\n        \"schema.compatibility\": \"NONE\",\r\n        \"topic.partitions\": \"1\"\r\n    }\r\n}<\/pre>\n<p>The File Chunk Sink Connector will subscribe to the topic &#8220;file-chunk-topic&#8221; to receive the contents of all files, then produce the original file and put it in a folder named merged in the \/tmp\/download folder.<\/p>\n<p>Make sure the \/tmp\/upload and \/tmp\/download folders exist before you install the Connectors on your devices! If you have not created them before, restart Apache Kafka Connect after installing these Connectors!<\/p>\n<p>Check all the Connectors installed in Apache Kafka Connect at this time, you will see the same result as me, as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23114 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-9.png\" alt=\"\" width=\"700\" height=\"332\" \/><\/p>\n<p>Now copy a file into the \/tmp\/upload folder and check the \/tmp\/download\/merged folder, you will see the result like me, as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-23115 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2024\/08\/an-introduction-to-apache-kafka-connect-10.png\" alt=\"\" width=\"700\" height=\"77\" \/><\/p>\n<p>So we have successfully copied the files with File Chunk Source Connector and File Chunk Sink Connector!<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;23104&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;4&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;An introduction to Apache Kafka Connect&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Apache Kafka Connect is an Apache Kafka tool for data integration, which helps us stream data between different data systems with Apache Kafka. It can help you ingest all data from a database or collect metrics information of your application into an Apache Kafka topic,&hellip; <a href=\"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":18814,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2146],"tags":[],"class_list":["post-23104","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apache-kafka-en","clearfix"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>An introduction to Apache Kafka Connect - Huong Dan Java<\/title>\n<meta name=\"description\" content=\"In this tutorial, I introduce with you all about Apache Kafka Connect, how to use it to stream data between systems.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An introduction to Apache Kafka Connect - Huong Dan Java\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, I introduce with you all about Apache Kafka Connect, how to use it to stream data between systems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html\" \/>\n<meta property=\"og:site_name\" content=\"Huong Dan Java\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-13T00:03:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/10\/kafka.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"390\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Khanh Nguyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/KhanhNguyenJ\" \/>\n<meta name=\"twitter:site\" content=\"@KhanhNguyenJ\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Khanh Nguyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html\"},\"author\":{\"name\":\"Khanh Nguyen\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"headline\":\"An introduction to Apache Kafka Connect\",\"datePublished\":\"2024-08-13T00:03:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html\"},\"wordCount\":959,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/kafka.jpeg\",\"articleSection\":[\"Apache Kafka\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html\",\"name\":\"An introduction to Apache Kafka Connect - Huong Dan Java\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/kafka.jpeg\",\"datePublished\":\"2024-08-13T00:03:45+00:00\",\"description\":\"In this tutorial, I introduce with you all about Apache Kafka Connect, how to use it to stream data between systems.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#primaryimage\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/kafka.jpeg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/kafka.jpeg\",\"width\":600,\"height\":390},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/an-introduction-to-apache-kafka-connect.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/huongdanjava.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"An introduction to Apache Kafka Connect\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/\",\"name\":\"Huong Dan Java\",\"description\":\"Java development tutorials\",\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/huongdanjava.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\",\"name\":\"Khanh Nguyen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"width\":1267,\"height\":1517,\"caption\":\"Khanh Nguyen\"},\"logo\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\"},\"description\":\"I love Java and everything related to Java.\",\"sameAs\":[\"https:\\\/\\\/huongdanjava.com\",\"https:\\\/\\\/www.facebook.com\\\/nhkhanh2406\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/KhanhNguyenJ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An introduction to Apache Kafka Connect - Huong Dan Java","description":"In this tutorial, I introduce with you all about Apache Kafka Connect, how to use it to stream data between systems.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html","og_locale":"en_US","og_type":"article","og_title":"An introduction to Apache Kafka Connect - Huong Dan Java","og_description":"In this tutorial, I introduce with you all about Apache Kafka Connect, how to use it to stream data between systems.","og_url":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html","og_site_name":"Huong Dan Java","article_publisher":"https:\/\/www.facebook.com\/nhkhanh2406","article_author":"https:\/\/www.facebook.com\/nhkhanh2406","article_published_time":"2024-08-13T00:03:45+00:00","og_image":[{"width":600,"height":390,"url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/10\/kafka.jpeg","type":"image\/jpeg"}],"author":"Khanh Nguyen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/KhanhNguyenJ","twitter_site":"@KhanhNguyenJ","twitter_misc":{"Written by":"Khanh Nguyen","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#article","isPartOf":{"@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html"},"author":{"name":"Khanh Nguyen","@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"headline":"An introduction to Apache Kafka Connect","datePublished":"2024-08-13T00:03:45+00:00","mainEntityOfPage":{"@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html"},"wordCount":959,"commentCount":0,"publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"image":{"@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/10\/kafka.jpeg","articleSection":["Apache Kafka"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html","url":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html","name":"An introduction to Apache Kafka Connect - Huong Dan Java","isPartOf":{"@id":"https:\/\/huongdanjava.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#primaryimage"},"image":{"@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/10\/kafka.jpeg","datePublished":"2024-08-13T00:03:45+00:00","description":"In this tutorial, I introduce with you all about Apache Kafka Connect, how to use it to stream data between systems.","breadcrumb":{"@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#primaryimage","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/10\/kafka.jpeg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/10\/kafka.jpeg","width":600,"height":390},{"@type":"BreadcrumbList","@id":"https:\/\/huongdanjava.com\/an-introduction-to-apache-kafka-connect.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/huongdanjava.com\/"},{"@type":"ListItem","position":2,"name":"An introduction to Apache Kafka Connect"}]},{"@type":"WebSite","@id":"https:\/\/huongdanjava.com\/#website","url":"https:\/\/huongdanjava.com\/","name":"Huong Dan Java","description":"Java development tutorials","publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/huongdanjava.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d","name":"Khanh Nguyen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","width":1267,"height":1517,"caption":"Khanh Nguyen"},"logo":{"@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg"},"description":"I love Java and everything related to Java.","sameAs":["https:\/\/huongdanjava.com","https:\/\/www.facebook.com\/nhkhanh2406","https:\/\/x.com\/https:\/\/twitter.com\/KhanhNguyenJ"]}]}},"_links":{"self":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/23104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/comments?post=23104"}],"version-history":[{"count":3,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/23104\/revisions"}],"predecessor-version":[{"id":23117,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/23104\/revisions\/23117"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media\/18814"}],"wp:attachment":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media?parent=23104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/categories?post=23104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/tags?post=23104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}