{"id":2381,"date":"2016-09-06T17:12:13","date_gmt":"2016-09-06T17:12:12","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2381"},"modified":"2023-05-19T04:36:58","modified_gmt":"2023-05-19T11:36:58","slug":"kafka-connector-3-developer-preview-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/","title":{"rendered":"Kafka Connector 3 Developer Preview 1"},"content":{"rendered":"<p>I\u2019m glad to announce the first developer preview of the next major iteration of our integration with Kafka. This version is based on a new library for DCP, and supports the Kafka Connect framework. In this post I will show how it could be integrated to relay data from Couchbase to HDFS.<\/p>\n<p>Here I&apos;ll\u00a0show steps for CentOS\/Fedora Linux distributions. The steps on other OSs are going to be similar. First, install Confluent Platform (<a href=\"https:\/\/docs.confluent.io\/3.0.0\/installation.html#rpm-packages-via-yum\">https:\/\/docs.confluent.io\/3.0.0\/installation.html#rpm-packages-via-yum<\/a>) and download the Couchbase zip archive with connector integration\u00a0<a href=\"https:\/\/packages.couchbase.com\/clients\/kafka\/3.0.0-DP1\/kafka-connect-couchbase-3.0.0-DP1.zip\">https:\/\/packages.couchbase.com\/clients\/kafka\/3.0.0-DP1\/kafka-connect-couchbase-3.0.0-DP1.zip<\/a><\/p>\n<p>To register the connector, just extract the contents to the default class path, for example on CentOS (Fedora) it is <code>\/usr\/share\/java<\/code>:<\/p>\n<pre>\r\n<code class=\"language-none\">unzip kafka-connect-couchbase-3.0.0-DP1.zip\r\nsudo cp -a kafka-connect-couchbase-3.0.0-DP1\/share \/usr\/<\/code><\/pre>\n<p>Now run the Confluent Control Center and all dependent services. Read more about what these commands do at Confluent&apos;s\u00a0<a href=\"https:\/\/docs.confluent.io\/3.0.0\/control-center\/docs\/quickstart.html\">quickstart guide<\/a><\/p>\n<pre>\r\n<code class=\"language-none\">sudo zookeeper-server-start \/etc\/kafka\/zookeeper.properties\r\nsudo kafka-server-start \/etc\/kafka\/server.properties\r\nsudo schema-registry-start \/etc\/schema-registry\/schema-registry.properties\r\nsudo connect-distributed \/etc\/kafka\/connect-distributed.properties\r\nsudo control-center-start \/etc\/confluent-control-center\/control-center.properties\r\n<\/code><\/pre>\n<p>At this point everything is ready for setting up the link to transfer documents from Couchbase to HDFS using Kafka Connect. We assume you are running Couchbase Server on <code>https:\/\/127.0.0.1:8091\/<\/code> and Confluent Control Center on <code>https:\/\/127.0.0.1:9021\/<\/code>. For this example,\u00a0make sure you have the\u00a0<code>travel-sample<\/code> bucket loaded on Couchbase. If you didn&apos;t set it up when setting up the cluster, you can add it through the settings part of the Web UI.<\/p>\n<p>Once you have all of theese prerequisites out of the way, navigate to the section \u201cKafka Connect\u201d in your\u00a0Confluent Control Center. Select\u00a0\u201cNew source\u201d, then select \u201cCouchbaseSourceConnector\u201d as a connector class and fill in the settings so that the final JSON will be similar to:<\/p>\n<pre>\r\n<code class=\"language-json\">{\r\n  \"connector.class\": \"com.couchbase.connect.kafka.CouchbaseSourceConnector\",\r\n  \"name\": \"travel-source\",\r\n  \"connection.bucket\": \"travel-sample\",\r\n  \"connection.cluster_address\": \"127.0.0.1\",\r\n  \"topic.name\": \"travel-topic\"\r\n}<\/code><\/pre>\n<p>Once you save the Source connection, the Connect daemon will start receiving mutations and storing them into specified Kafka topic. To demonstrate a\u00a0full pipeline, lets setup a Sink connection to get data out of Kafka. To do so, go to \u201cSinks\u201d tab, and click \u201cNew sink\u201d button. It should ask for a topics where interesting data stored, enter \u201ctravel-topic\u201d. Then select \u201cHdfsSinkConnector\u201d and fill in settings so that, the JSON config will look like this (assuming the HDFS name node is listening on <code>hdfs:\/\/127.0.0.1:8020\/<\/code>):<\/p>\n<pre>\r\n<code class=\"language-json\">{\r\n  \"connector.class\": \"io.confluent.connect.hdfs.HdfsSinkConnector\",\r\n  \"name\": \"hdfs-travel-sink\",\r\n  \"flush.size\": \"10\",\r\n  \"partitioner.class\": \"io.confluent.connect.hdfs.partitioner.FieldPartitioner\",\r\n  \"partition.field.name\": \"partition\",\r\n  \"hdfs.url\": \"hdfs:\/\/127.0.0.1:8020\",\r\n  \"topics\": \"travel-topic\"\r\n}\r\n<\/code><\/pre>\n<p>Once the Sink connection configured, you will see the data appearing on HDFS in <code>\/topics\/travel-topic\/<\/code>\u00a0with the default\u00a0topics directory. Let&apos;s inspect one of them:<\/p>\n<pre>\r\n<code class=\"language-none\">$ hdfs dfs -fs hdfs:\/\/localhost:8020 -cat \/topics\/travel-topic\/partition=89\/travel-topic+0+0000000101+0000000101.avro | avropipe\r\n\/   []\r\n\/0  {}\r\n\/0\/partition    89\r\n\/0\/key  \"route_28879\"\r\n\/0\/expiration   0\r\n\/0\/flags    33554438\r\n\/0\/cas  1471633063247347712\r\n\/0\/lockTime 0\r\n\/0\/bySeqno  1\r\n\/0\/revSeqno 1\r\n\/0\/content  \"{\"id\":28879,\"type\":\"route\",\"airline\":\"G4\",\"airlineid\":\"airline_35\",\"sourceairport\":\"AZA\",\"destinationairport\":\"FWA\",\"stops\":0,\"equipment\":\"319\",\"schedule\":[{\"day\":0,\"utc\":\"01:59:00\",\"flight\":\"G4097\"},{\"day\":1,\"utc\":\"09:30:00\",\"flight\":\"G4697\"},{\"day\":1,\"utc\":\"09:50:00\",\"flight\":\"G4879\"},{\"day\":1,\"utc\":\"07:44:00\",\"flight\":\"G4310\"},{\"day\":1,\"utc\":\"01:23:00\",\"flight\":\"G4226\"},{\"day\":2,\"utc\":\"19:58:00\",\"flight\":\"G4921\"},{\"day\":2,\"utc\":\"09:49:00\",\"flight\":\"G4376\"},{\"day\":2,\"utc\":\"17:57:00\",\"flight\":\"G4446\"},{\"day\":2,\"utc\":\"21:06:00\",\"flight\":\"G4032\"},{\"day\":3,\"utc\":\"17:05:00\",\"flight\":\"G4198\"},{\"day\":3,\"utc\":\"12:21:00\",\"flight\":\"G4098\"},{\"day\":3,\"utc\":\"19:31:00\",\"flight\":\"G4571\"},{\"day\":4,\"utc\":\"05:27:00\",\"flight\":\"G4001\"},{\"day\":4,\"utc\":\"07:03:00\",\"flight\":\"G4023\"},{\"day\":4,\"utc\":\"16:50:00\",\"flight\":\"G4631\"},{\"day\":5,\"utc\":\"18:13:00\",\"flight\":\"G4757\"},{\"day\":6,\"utc\":\"20:35:00\",\"flight\":\"G4157\"},{\"day\":6,\"utc\":\"21:52:00\",\"flight\":\"G4582\"},{\"day\":6,\"utc\":\"00:55:00\",\"flight\":\"G4348\"},{\"day\":6,\"utc\":\"06:01:00\",\"flight\":\"G4731\"}],\"distance\":2483.859992489083}\"\r\n<\/code><\/pre>\n<p>That\u2019s my quick runthrough example! The DCP client is still under active development and has some additional features being added to handle various topology change, failure scenarios. The next couple updates of our Kafka connector will pick up those updates. I should also briefly note that <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/sdk\/java\/compatibility-versions-features.html#topic_bhl_2cv_xv__d295e17\">Couchbase&apos;s DCP client interface should be considered volatile<\/a> for the moment. We use it in various projects, but you should only use it directly at your own risk.<\/p>\n<p>The source code for\u00a0the connector is at\u00a0<a href=\"https:\/\/github.com\/couchbaselabs\/kafka-connect-couchbase\">https:\/\/github.com\/couchbaselabs\/kafka-connect-couchbase<\/a>. The issue tracker is at <a href=\"https:\/\/issues.couchbase.com\/projects\/KAFKAC\">https:\/\/issues.couchbase.com\/projects\/KAFKAC<\/a>, and feel free to ask any questions on\u00a0<a href=\"https:\/\/www.couchbase.com\/forums\/\">https:\/\/www.couchbase.com\/forums\/<\/a>.<\/p>\n<p>\u00a0<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019m glad to announce the first developer preview of the next major iteration of our integration with Kafka. This version is based on a new library for DCP, and supports the Kafka Connect framework. In this post I will show [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8995],"class_list":["post-2381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kafka Connector 3 Developer Preview 1 - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kafka Connector 3 Developer Preview 1\" \/>\n<meta property=\"og:description\" content=\"I\u2019m glad to announce the first developer preview of the next major iteration of our integration with Kafka. This version is based on a new library for DCP, and supports the Kafka Connect framework. In this post I will show [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-09-06T17:12:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-05-19T11:36:58+00:00\" \/>\n<meta name=\"author\" content=\"Sergey Avseyev, SDK Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@avsej\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sergey Avseyev, SDK Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\"},\"author\":{\"name\":\"Sergey Avseyev, SDK Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e\"},\"headline\":\"Kafka Connector 3 Developer Preview 1\",\"datePublished\":\"2016-09-06T17:12:12+00:00\",\"dateModified\":\"2023-05-19T11:36:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\"},\"wordCount\":492,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\",\"name\":\"Kafka Connector 3 Developer Preview 1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-09-06T17:12:12+00:00\",\"dateModified\":\"2023-05-19T11:36:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kafka Connector 3 Developer Preview 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e\",\"name\":\"Sergey Avseyev, SDK Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/796ab283bd56fe3716a102ebe16daff6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g\",\"caption\":\"Sergey Avseyev, SDK Engineer, Couchbase\"},\"description\":\"Sergey Avseyev is a SDK Engineer at Couchbase. Sergey Avseyev is responsible for development of Kafka connector, and underlying library, which implements DCP, Couchbase replication protocol. Also maintaining PHP SDK for Couchbase.\",\"sameAs\":[\"https:\/\/x.com\/avsej\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/sergey-avseyev\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kafka Connector 3 Developer Preview 1 - The Couchbase Blog","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:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/","og_locale":"en_US","og_type":"article","og_title":"Kafka Connector 3 Developer Preview 1","og_description":"I\u2019m glad to announce the first developer preview of the next major iteration of our integration with Kafka. This version is based on a new library for DCP, and supports the Kafka Connect framework. In this post I will show [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-09-06T17:12:12+00:00","article_modified_time":"2023-05-19T11:36:58+00:00","author":"Sergey Avseyev, SDK Engineer, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@avsej","twitter_misc":{"Written by":"Sergey Avseyev, SDK Engineer, Couchbase","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/"},"author":{"name":"Sergey Avseyev, SDK Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e"},"headline":"Kafka Connector 3 Developer Preview 1","datePublished":"2016-09-06T17:12:12+00:00","dateModified":"2023-05-19T11:36:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/"},"wordCount":492,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/","url":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/","name":"Kafka Connector 3 Developer Preview 1 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-09-06T17:12:12+00:00","dateModified":"2023-05-19T11:36:58+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/kafka-connector-3-developer-preview-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kafka Connector 3 Developer Preview 1"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e","name":"Sergey Avseyev, SDK Engineer, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/796ab283bd56fe3716a102ebe16daff6","url":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g","caption":"Sergey Avseyev, SDK Engineer, Couchbase"},"description":"Sergey Avseyev is a SDK Engineer at Couchbase. Sergey Avseyev is responsible for development of Kafka connector, and underlying library, which implements DCP, Couchbase replication protocol. Also maintaining PHP SDK for Couchbase.","sameAs":["https:\/\/x.com\/avsej"],"url":"https:\/\/www.couchbase.com\/blog\/author\/sergey-avseyev\/"}]}},"authors":[{"term_id":8995,"user_id":25,"is_guest":0,"slug":"sergey-avseyev","display_name":"Sergey Avseyev, SDK Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g","author_category":"","last_name":"Avseyev, SDK Engineer, Couchbase","first_name":"Sergey","job_title":"","user_url":"","description":"Sergey Avseyev is a SDK Engineer at Couchbase. Sergey Avseyev is responsible for development of Kafka connector, and underlying library, which implements DCP, Couchbase replication protocol. Also maintaining PHP SDK for Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2381"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2381\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2381"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}