{"id":369,"date":"2016-01-21T19:13:26","date_gmt":"2016-01-21T19:13:26","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/"},"modified":"2016-01-21T19:13:26","modified_gmt":"2016-01-21T19:13:26","slug":"kafka-and-couchbase-up-and-running-in-10-minutes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/kafka-and-couchbase-up-and-running-in-10-minutes\/","title":{"rendered":"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Intro<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Couchbase Kafka Connector 1.2.0 just shipped. Along with the various bug fixes, there is new sample code for a Kafka consumer in addition to the Kafka producer that was previously available. To quickly review the terms:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A Kafka producer writes data to Kafka, so it&#8217;s a source of messages from Kafka&#8217;s perspective.<\/li>\n\n\n<li>A consumer in Kafka terminology is a process that subscribes to topics and then does something with the feed of published messages that are emitted from a Kafka cluster. It&#8217;s basically a sink.<\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In this blog, you&#8217;ll get up and running with a &#8220;Hello World!&#8221;-style sample Kafka consumer that writes to Couchbase. Along the way, you&#8217;ll also get a sandbox environment with a Kafka broker and a single node Couchbase Server so that you can actually run and modify\u00a0the sample consumer and producer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installing Prerequisites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <a href=\"https:\/\/github.com\/couchbase\/couchbase-kafka-connector\/tree\/master\/samples\">samples<\/a> are part of the <a href=\"https:\/\/github.com\/couchbase\/couchbase-kafka-connector\">Couchbase Kafka Connector<\/a> source tree. To get them, just clone the whole repository:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ git clone git:\/\/github.com\/couchbase\/couchbase-kafka-connector.git \/tmp\/kafka-connector[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, let&#8217;s setup your testing environment using pre-configured Kafka and Couchbase Server images. You have to install Vagrant, VirtualBox, and Ansible in order to set them up locally. If you have these services installed somewhere else, make sure you adjust the host addresses throughout this guide appropriately.<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ cd \/tmp\/kafka-connector\/env[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check versions of dependencies:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ ansible &#8211;version<br \/>\n$ vboxmanage &#8211;version<br \/>\n$ vagrant -v[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can assign human readable names to the boxes by using the plugin for Vagrant. If you don&#8217;t already have it installed, use the following command:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ vagrant plugin install vagrant-hostsupdater[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now you&#8217;re ready to provision the servers and get running:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ vagrant up<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Note: If a server fails to install due to timeouts, retry &#8220;vagrant up&#8221; after a few minutes and it may work.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verify that the hosts are responding:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ ping couchbase1.vagrant<br \/>\n$ ping kafka1.vagrant[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you navigate to you should be able to see your single-node Couchbase Server configured with credentials\u00a0<code>Administrator<\/code>\/<code>password<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Building the Samples<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To avoid any classpath issues, use maven to create a self-contained JAR file for each sample application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The generator application is a minimal CLI application. It uses the Couchbase Java SDK to wrap input lines from STDIN into JSON documents and sends them to the &#8220;default&#8221; bucket on Couchbase Server:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ cd \/tmp\/kafka-connector\/samples\/generator<br \/>\n$ mvn assembly:assembly[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The producer attaches to Couchbase Server and transmits all mutations to Kafka. This application uses the couchbase-kafka-connector project behind the scenes.<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ cd \/tmp\/kafka-connector\/samples\/producer<br \/>\n$ mvn assembly:assembly[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consumer is a typical Kafka consumer, which by default just outputs any incoming message in the topic &#8220;default&#8221; to STDOUT.<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ cd \/tmp\/kafka-connector\/samples\/consumer<br \/>\n$ mvn assembly:assembly<br \/>\n[\/crayon]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running the Samples<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now that you have everything prepared, it&#8217;s time to run all the samples. You&#8217;ll need three different shell sessions\u00a0because each of them runs a process until stopped. We&#8217;ll assume that you are in the <span>\u00a0<\/span><code>\/tmp\/kafka-connector\/samples<\/code><span>\u00a0<\/span>directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, start your generator:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ java -jar generator\/target\/kafka-samples-generator-1.0-SNAPSHOT-jar-with-dependencies.jar<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It should output the connection settings and then fall to a command prompt<span>\u00a0<\/span><code>&gt;<\/code>. You can type anything there and\u00a0verify that it&#8217;s\u00a0being created properly by looking in the Couchbase Server Admin UI:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8157 size-full\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/Couchbase-and-kafka.png\" alt=\"\" width=\"1281\" height=\"648\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Documents from generator in the bucket<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]&#8230;<br \/>\nINFO: Opened bucket default<br \/>\n> hello, kafka demo!<br \/>\n>> key=key-5, value={&#8220;line&#8221;:&#8221;hello, kafka demo!&#8221;}<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At this moment you can run the connector example<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ java -jar producer\/target\/kafka-samples-producer-1.0-SNAPSHOT-jar-with-dependencies.jar[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For every line you type in the generator, you will see a line from the producer like this:<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]RECEIVED: com.couchbase.kafka.DCPEvent@4e44cb88[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The sample writes it just before sending the payload to Kafka, in the filter class implementation. Let&#8217;s check how the Kafka receives these messages.<\/p>\n\n\n<p>[crayon lang=&#8221;bash&#8221;]$ java -jar consumer\/target\/kafka-samples-consumer-1.0-SNAPSHOT-jar-with-dependencies.jar<br \/>\n1: {&#8220;line&#8221;:&#8221;hello, kafka demo!&#8221;}<br \/>\n2: {&#8220;line&#8221;:&#8221;hello, this is a test&#8221;}[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can continue playing with it as long as all three services are running.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Developing with Couchbase Kafka Connector<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s move on and take a look at the code. All three applications are pretty friendly for experiments, for example, the generator fits in just a few lines:<\/p>\n\n\n<p>[crayon lang=&#8221;java&#8221;]public class Example {<br \/>\n    public static void main(String args[]) throws IOException {<br \/>\n        Random random = new Random();<br \/>\n        Cluster cluster = CouchbaseCluster.create(&#8220;couchbase1.vagrant&#8221;);<br \/>\n        Bucket bucket = cluster.openBucket();<br \/>\n        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));<br \/>\n        String line;<br \/>\n        do {<br \/>\n            System.out.print(&#8220;> &#8220;);<br \/>\n            line = input.readLine();<br \/>\n            if (line == null) {<br \/>\n                break;<br \/>\n            }<br \/>\n            String key = &#8220;key-&#8221; + random.nextInt(10);<br \/>\n            JsonObject value = JsonObject.create().put(&#8220;line&#8221;, line);<br \/>\n            bucket.upsert(JsonDocument.create(key, value));<br \/>\n            System.out.printf(&#8220;>> key=%s, value=%sn&#8221;, key, value);<br \/>\n        } while (true);<br \/>\n    }<br \/>\n}[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Basically, generator opens a connection to bucket &#8220;default&#8221; on your &#8220;couchbase1.vagrant&#8221; instance and writes your messages to random keys. You can extend it to send other types of events. Another thing you might want to try to do is to remove keys.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By default, Couchbase Connector for Kafka runs in server mode, where it borrows active thread and actively listens to Couchbase Server for new events. There are several points where you can apply your ideas or changes. The most obvious one is configuration builder, where you not only specify the credentials and addresses of the services you are connecting to, but you can also specify various serializer and filter classes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The sample application implements several of them. Filter class is the simplest:<\/p>\n\n\n<p>[crayon lang=&#8221;java&#8221;]<br \/>\npublic class SampleFilter implements Filter {<br \/>\n\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public boolean pass(DCPEvent dcpEvent) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(&#8220;RECEIVED: &#8221; + dcpEvent);<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 return true;<br \/>\n\u00a0 \u00a0 }<br \/>\n}<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here you can put in any custom checks you want, and if<span>\u00a0<\/span><code>pass()<\/code><span>\u00a0<\/span>returns <span>\u00a0<\/span><code>false<\/code>, the connector discards the message and won&#8217;t send it on to Kafka.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Default Encoder, which comes with the connector distribution, tries to represent every message as JSON, but that probably is not what you need, so you can apply and conversion to<span>\u00a0<\/span><code>DCPEvent<\/code><span>\u00a0<\/span>instance and return byte array, which will be stored in Kafka. In this example, we just convert events to their string representation.<\/p>\n\n\n<p>[crayon lang=&#8221;java&#8221;]<br \/>\npublic class SampleEncoder extends AbstractEncoder {<br \/>\n\u00a0 \u00a0 public SampleEncoder(final VerifiableProperties properties) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 super(properties);<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public byte[] toBytes(final DCPEvent dcpEvent) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 if (dcpEvent.message() instanceof MutationMessage) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MutationMessage message = (MutationMessage) dcpEvent.message();<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return message.content().toString(CharsetUtil.UTF_8).getBytes();<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 } else {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return dcpEvent.message().toString().getBytes();<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 }<br \/>\n\u00a0 \u00a0 }<br \/>\n}<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A more advanced setting is<span>\u00a0<\/span><code>StateSerializer<\/code><span>\u00a0<\/span>interface. By implementing it, you can control how the library will track stream cursors (i.e. the sequence numbers for every partition inside Couchbase Server), and whether it will resume after connector restart. There is a Zookeeper implementation of state serializer in the distribution. Here in the sample, we&#8217;ve implemented <code>NullStateSerializer<\/code><span>\u00a0<\/span>which doesn&#8217;t persist anything, but it does show a minimal implementation.<\/p>\n\n\n<p>[crayon lang=&#8221;java&#8221;]<br \/>\npublic class NullStateSerializer implements StateSerializer {<br \/>\n\u00a0 \u00a0 public NullStateSerializer(final CouchbaseKafkaEnvironment environment) {<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public void dump(BucketStreamAggregatorState aggregatorState) {<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public void dump(BucketStreamAggregatorState aggregatorState, short partition) {<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public BucketStreamAggregatorState load(BucketStreamAggregatorState aggregatorState) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 return new BucketStreamAggregatorState(aggregatorState.name());<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public BucketStreamState load(BucketStreamAggregatorState aggregatorState, short partition) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 return new BucketStreamState(partition, 0, 0, 0xffffffff, 0, 0xffffffff);<br \/>\n\u00a0 \u00a0 }<br \/>\n}<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The last component of your demo cluster is the Kafka consumer<span>\u00a0<\/span><code>AbstractConsumer<\/code>, which is a pretty typical instance of a consumer. It consists of two parts: , which implements bootstrap and positioning on the Kafka topic, and <span>PrintConsumer<\/span>, which carries your &#8220;business logic&#8221;, or just outputs every message it gets passed by <span>AbstractConsumer<\/span>:<\/p>\n\n\n<p>[crayon lang=&#8221;java&#8221;]<br \/>\npublic class PrintConsumer extends AbstractConsumer {<br \/>\n\u00a0 \u00a0 public PrintConsumer(String[] seedBrokers, int port) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 super(seedBrokers, port);<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 public PrintConsumer(String seedBroker, int port) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 super(seedBroker, port);<br \/>\n\u00a0 \u00a0 }<\/p>\n<p>\u00a0 \u00a0 @Override<br \/>\n\u00a0 \u00a0 public void handleMessage(long offset, byte[] bytes) {<br \/>\n\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(String.valueOf(offset) + &#8220;: &#8221; + new String(bytes));<br \/>\n\u00a0 \u00a0 }<br \/>\n}<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As in the other examples here, you can play around with modifying the sample consumer. You can even close the circuit by sending everything back to Couchbase Server. Kafka is distributed software, just like Couchbase Server, so keep that in mind when running on your own cluster and adjust the main() function accordingly. In our sample, we have only a single partition, partition (<span>0<\/span>) in Kafka, so our main looks like this:<\/p>\n\n\n<p>[crayon lang=&#8221;java&#8221;]public class Example {<br \/>\n    public static void main(String args[]) {<br \/>\n        PrintConsumer example = new PrintConsumer(&#8220;kafka1.vagrant&#8221;, 9092);<br \/>\n        example.run(&#8220;default&#8221;, 0);<br \/>\n    }<br \/>\n}[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, in a production cluster you&#8217;ll be running more than one partition.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">I hope this helps you get off to a good start with Couchbase and Kafka.\u00a0Cheers!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intro Couchbase Kafka Connector 1.2.0 just shipped. Along with the various bug fixes, there is new sample code for a Kafka consumer in addition to the Kafka producer that was previously available. To quickly review the terms: In this blog, you&#8217;ll get up and running with a &#8220;Hello World!&#8221;-style sample Kafka consumer that writes to [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_acf":"","footnotes":""},"categories":[1],"tags":[139,140],"ppma_author":[101],"class_list":["post-369","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-connectors","tag-kafka"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Up &amp; Running with the Sample Kafka Consumer in 10 Minutes<\/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\/pt\/kafka-and-couchbase-up-and-running-in-10-minutes\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes\" \/>\n<meta property=\"og:description\" content=\"Intro Couchbase Kafka Connector 1.2.0 just shipped. Along with the various bug fixes, there is new sample code for a Kafka consumer in addition to the Kafka producer that was previously available. To quickly review the terms: In this blog, you&#8217;ll get up and running with a &#8220;Hello World!&#8221;-style sample Kafka consumer that writes to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/kafka-and-couchbase-up-and-running-in-10-minutes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-21T19:13:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/\"},\"author\":{\"name\":\"Sergey Avseyev, SDK Engineer, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/e9181374f225c90084ec3ba86bdcfa2e\"},\"headline\":\"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes\",\"datePublished\":\"2016-01-21T19:13:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/\"},\"wordCount\":1437,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"connectors\",\"kafka\"],\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/\",\"name\":\"Up & Running with the Sample Kafka Consumer in 10 Minutes\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-21T19:13:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/kafka-and-couchbase-up-and-running-in-10-minutes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"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\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g796ab283bd56fe3716a102ebe16daff6\",\"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\\\/pt\\\/author\\\/sergey-avseyev\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Up & Running with the Sample Kafka Consumer in 10 Minutes","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\/pt\/kafka-and-couchbase-up-and-running-in-10-minutes\/","og_locale":"pt_BR","og_type":"article","og_title":"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes","og_description":"Intro Couchbase Kafka Connector 1.2.0 just shipped. Along with the various bug fixes, there is new sample code for a Kafka consumer in addition to the Kafka producer that was previously available. To quickly review the terms: In this blog, you&#8217;ll get up and running with a &#8220;Hello World!&#8221;-style sample Kafka consumer that writes to [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/kafka-and-couchbase-up-and-running-in-10-minutes\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-01-21T19:13:26+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"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":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/"},"author":{"name":"Sergey Avseyev, SDK Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e9181374f225c90084ec3ba86bdcfa2e"},"headline":"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes","datePublished":"2016-01-21T19:13:26+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/"},"wordCount":1437,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","keywords":["connectors","kafka"],"articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/","url":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/","name":"Up & Running with the Sample Kafka Consumer in 10 Minutes","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2016-01-21T19:13:26+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kafka and Couchbase: Up and Running with the Sample Kafka Consumer in 10 Minutes"}]},{"@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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","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":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/288a892d231cf8c4e57ed0643e4681b4654a141361f6ec3c5b79ccd4d885e038?s=96&d=mm&r=g796ab283bd56fe3716a102ebe16daff6","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\/pt\/author\/sergey-avseyev\/"}]}},"acf":[],"authors":[{"term_id":101,"user_id":25,"is_guest":0,"slug":"sergey-avseyev","display_name":"Sergey Avseyev, SDK Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"Sergey","last_name":"Avseyev, SDK Engineer, Couchbase","user_url":"","job_title":"","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\/pt\/wp-json\/wp\/v2\/posts\/369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=369"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/369\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=369"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=369"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=369"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}