{"id":2010,"date":"2016-01-21T19:13:26","date_gmt":"2016-01-21T19:13:26","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2010"},"modified":"2020-02-03T04:33:05","modified_gmt":"2020-02-03T12:33:05","slug":"kafka-and-couchbase-up-and-running-in-10-minutes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/kafka-and-couchbase-up-and-running-in-10-minutes\/","title":{"rendered":"Kafka\uc640 Couchbase: 10\ubd84 \ub9cc\uc5d0 \uc0d8\ud50c Kafka \uc18c\ube44\uc790 \uc2dc\uc791 \ubc0f \uc2e4\ud589\ud558\uae30"},"content":{"rendered":"<h2>\uc18c\uac1c<\/h2>\n<p>Couchbase Kafka Connector 1.2.0\uc774 \ucd9c\uc2dc\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\uc591\ud55c \ubc84\uadf8 \uc218\uc815\uacfc \ud568\uaed8 \uc774\uc804\uc5d0 \uc81c\uacf5\ub418\ub358 Kafka \uc0dd\uc0b0\uc790 \uc678\uc5d0 Kafka \uc18c\ube44\uc790\ub97c \uc704\ud55c \uc0c8\ub85c\uc6b4 \uc0d8\ud50c \ucf54\ub4dc\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc57d\uad00\uc744 \ube60\ub974\uac8c \uc0b4\ud3b4\ubcf4\uc138\uc694:<\/p>\n<ul>\n<li>\uce74\ud504\uce74 \uc81c\uc791\uc790\ub294 \uce74\ud504\uce74\uc5d0 \ub370\uc774\ud130\ub97c \uae30\ub85d\ud558\ubbc0\ub85c \uce74\ud504\uce74\uc758 \uad00\uc810\uc5d0\uc11c \ubcf4\uba74 \uba54\uc2dc\uc9c0\uc758 \uc6d0\ucc9c\uc774 \ub429\ub2c8\ub2e4.<\/li>\n<li>\uce74\ud504\uce74 \uc6a9\uc5b4\ub85c \uc18c\ube44\uc790\ub294 \ud1a0\ud53d\uc744 \uad6c\ub3c5\ud55c \ub2e4\uc74c \uce74\ud504\uce74 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \ubc29\ucd9c\ub418\ub294 \uac8c\uc2dc\ub41c \uba54\uc2dc\uc9c0\uc758 \ud53c\ub4dc\ub85c \ubb34\uc5b8\uac00\ub97c \ud558\ub294 \ud504\ub85c\uc138\uc2a4\uc785\ub2c8\ub2e4. \uae30\ubcf8\uc801\uc73c\ub85c \uc2f1\ud06c\uc785\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\uc774 \ube14\ub85c\uadf8\uc5d0\uc11c\ub294 Couchbase\uc5d0 \uc4f0\ub294 \"Hello World!\" \uc2a4\ud0c0\uc77c\uc758 \uc0d8\ud50c Kafka \uc18c\ube44\uc790\ub97c \uc2dc\uc791\ud558\uace0 \uc2e4\ud589\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uadf8 \uacfc\uc815\uc5d0\uc11c \uc0d8\ud50c \uc18c\ube44\uc790\uc640 \uc0dd\uc0b0\uc790\ub97c \uc2e4\uc81c\ub85c \uc2e4\ud589\ud558\uace0 \uc218\uc815\ud560 \uc218 \uc788\ub3c4\ub85d Kafka \ube0c\ub85c\ucee4\uc640 \ub2e8\uc77c \ub178\ub4dc Couchbase Server\uac00 \ud3ec\ud568\ub41c \uc0cc\ub4dc\ubc15\uc2a4 \ud658\uacbd\ub3c4 \uc81c\uacf5\ub429\ub2c8\ub2e4.<\/p>\n<h2>\ud544\uc218 \uad6c\uc131 \uc694\uc18c \uc124\uce58<\/h2>\n<p>\uadf8\ub9ac\uace0 <a href=\"https:\/\/github.com\/couchbase\/couchbase-kafka-connector\/tree\/master\/samples\">\uc0d8\ud50c<\/a> \uc758 \uc77c\ubd80\uc785\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/couchbase\/couchbase-kafka-connector\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uce74\ud504\uce74 \ucee4\ub125\ud130<\/a> \uc18c\uc2a4 \ud2b8\ub9ac. \uc774\ub97c \uc5bb\uc73c\ub824\uba74 \uc804\uccb4 \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ubcf5\uc81c\ud558\uba74 \ub429\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-bash\">$ git clone git:\/\/github.com\/couchbase\/couchbase-kafka-connector.git \/tmp\/kafka-connector<\/code><\/pre>\n<p>\uc774\uc81c \ubbf8\ub9ac \uad6c\uc131\ub41c Kafka \ubc0f Couchbase Server \uc774\ubbf8\uc9c0\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud14c\uc2a4\ud2b8 \ud658\uacbd\uc744 \uc124\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \ub85c\uceec\ub85c \uc124\uc815\ud558\ub824\uba74 Vagrant, VirtualBox \ubc0f Ansible\uc744 \uc124\uce58\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc11c\ube44\uc2a4\ub97c \ub2e4\ub978 \uacf3\uc5d0 \uc124\uce58\ud55c \uacbd\uc6b0 \uc774 \uac00\uc774\ub4dc\uc758 \ud638\uc2a4\ud2b8 \uc8fc\uc18c\ub97c \uc801\uc808\ud558\uac8c \uc870\uc815\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">$ cd \/tmp\/kafka-connector\/env<\/code><\/pre>\n<p>\uc885\uc18d\uc131 \ubc84\uc804\uc744 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-bash\">$ ansible --version\r\n$ vboxmanage --version\r\n$ vagrant -v<\/code><\/pre>\n<p>Vagrant\uc6a9 \ud50c\ub7ec\uadf8\uc778\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc0ac\ub78c\uc774 \uc77d\uc744 \uc218 \uc788\ub294 \uc774\ub984\uc744 \uc0c1\uc790\uc5d0 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc544\uc9c1 \uc124\uce58\ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 \ub2e4\uc74c \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc138\uc694:<\/p>\n<pre><code class=\"language-bash\">$ vagrant plugin install vagrant-hostsupdater<\/code><\/pre>\n<p>\uc774\uc81c \uc11c\ubc84\ub97c \ud504\ub85c\ube44\uc800\ub2dd\ud558\uace0 \uc2e4\ud589\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code>$ vagrant up<\/code><\/pre>\n<p>\ucc38\uace0: \uc2dc\uac04 \ucd08\uacfc\ub85c \uc778\ud574 \uc11c\ubc84 \uc124\uce58\uc5d0 \uc2e4\ud328\ud55c \uacbd\uc6b0 \uba87 \ubd84 \ud6c4\uc5d0 '\ubc30\uac74\ud2b8 \uc5c5'\uc744 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uba74 \uc791\ub3d9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud638\uc2a4\ud2b8\uac00 \uc751\ub2f5\ud558\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-bash\">$ ping couchbase1.vagrant\r\n$ ping kafka1.vagrant<\/code><\/pre>\n<p>\ub85c \uc774\ub3d9\ud558\uba74 \uc790\uaca9 \uc99d\uba85\uc744 \uc0ac\uc6a9\ud558\uc5ec \uad6c\uc131\ub41c \ub2e8\uc77c \ub178\ub4dc Couchbase Server\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; background-color: rgba(0, 0, 0, 0.0392157);\">\uad00\ub9ac\uc790<\/code>\/<code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; background-color: rgba(0, 0, 0, 0.0392157);\">\ube44\ubc00\ubc88\ud638<\/code>.<\/p>\n<h2>\uc0d8\ud50c \uad6c\ucd95<\/h2>\n<p>\ud074\ub798\uc2a4 \uacbd\ub85c \ubb38\uc81c\ub97c \ubc29\uc9c0\ud558\ub824\uba74 maven\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac01 \uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub300\ud574 \ub3c5\ub9bd\ub41c JAR \ud30c\uc77c\uc744 \ub9cc\ub4dc\uc138\uc694.<\/p>\n<p>\uc0dd\uc131\uae30 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ucd5c\uc18c\ud55c\uc758 CLI \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc785\ub2c8\ub2e4. \uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 Couchbase Java SDK\ub97c \uc0ac\uc6a9\ud558\uc5ec STDIN\uc758 \uc785\ub825 \uc904\uc744 JSON \ubb38\uc11c\ub85c \ub798\ud551\ud558\uace0 \uc774\ub97c Couchbase Server\uc758 \"\uae30\ubcf8\" \ubc84\ud0b7\uc73c\ub85c \ubcf4\ub0c5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-bash\">$ cd \/tmp\/kafka-connector\/samples\/generator\r\n$ mvn assembly:assembly<\/code><\/pre>\n<p>\ud504\ub85c\ub4c0\uc11c\ub294 Couchbase Server\uc5d0 \uc5f0\uacb0\ud558\uc5ec \ubaa8\ub4e0 \ub3cc\uc5f0\ubcc0\uc774\ub97c Kafka\ub85c \uc804\uc1a1\ud569\ub2c8\ub2e4. \uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c couchbase-kafka-connector \ud504\ub85c\uc81d\ud2b8\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">$ cd \/tmp\/kafka-connector\/samples\/producer\r\n$ mvn assembly:assembly<\/code><\/pre>\n<p>Consumer\ub294 \uc804\ud615\uc801\uc778 Kafka \uc18c\ube44\uc790\ub85c, \uae30\ubcf8\uc801\uc73c\ub85c \"default\" \ud1a0\ud53d\uc73c\ub85c \ub4e4\uc5b4\uc624\ub294 \ubaa8\ub4e0 \uba54\uc2dc\uc9c0\ub97c STDOUT\uc73c\ub85c \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">$ cd \/tmp\/kafka-connector\/samples\/consumer\r\n$ mvn assembly:assembly\r\n<\/code><\/pre>\n<h2>\uc0d8\ud50c \uc2e4\ud589<\/h2>\n<p>\uc774\uc81c \ubaa8\ub4e0 \uc900\ube44\uac00 \uc644\ub8cc\ub418\uc5c8\uc73c\ub2c8 \ubaa8\ub4e0 \uc0d8\ud50c\uc744 \uc2e4\ud589\ud560 \ucc28\ub840\uc785\ub2c8\ub2e4. \uac01 \uc178 \uc138\uc158\uc740 \uc911\uc9c0\ub420 \ub54c\uae4c\uc9c0 \ud504\ub85c\uc138\uc2a4\ub97c \uc2e4\ud589\ud558\ubbc0\ub85c \uc138 \uac1c\uc758 \uc11c\ub85c \ub2e4\ub978 \uc178 \uc138\uc158\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\uc774 \ud604\uc7ac <span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">\/tmp\/kafka-connector\/samples<\/code><span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span>\ub514\ub809\ud130\ub9ac\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800, \ubc1c\uc804\uae30\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-bash\">$ java -jar generator\/target\/kafka-samples-generator-1.0-SNAPSHOT-jar-with-dependencies.jar\r\n<\/code><\/pre>\n<p>\uc5f0\uacb0 \uc124\uc815\uc744 \ucd9c\ub825\ud55c \ub2e4\uc74c \uba85\ub839 \ud504\ub86c\ud504\ud2b8\ub85c \ub118\uc5b4\uac00\uc57c \ud569\ub2c8\ub2e4.<span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">&gt;<\/code>. \uc5ec\uae30\uc5d0 \ubb34\uc5c7\uc774\ub4e0 \uc785\ub825\ud560 \uc218 \uc788\uc73c\uba70 Couchbase Server \uad00\ub9ac\uc790 UI\uc5d0\uc11c \uc81c\ub300\ub85c \uc0dd\uc131\ub418\uace0 \uc788\ub294\uc9c0 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8157 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2016\/01\/Couchbase-and-kafka.png\" alt=\"\" width=\"1281\" height=\"648\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/01\/Couchbase-and-kafka.png 1281w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/01\/Couchbase-and-kafka-300x152.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/01\/Couchbase-and-kafka-1024x518.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/01\/Couchbase-and-kafka-768x388.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/01\/Couchbase-and-kafka-20x10.png 20w\" sizes=\"auto, (max-width: 1281px) 100vw, 1281px\" \/><\/p>\n<p>\ubc84\ud0b7\uc5d0 \uc788\ub294 \uc0dd\uc131\uae30\uc758 \ubb38\uc11c<\/p>\n<pre><code class=\"language-bash\">...\r\nINFO: Opened bucket default\r\n&gt; hello, kafka demo!\r\n&gt;&gt; key=key-5, value={\"line\":\"hello, kafka demo!\"}\r\n<\/code><\/pre>\n<p>\ud604\uc7ac \ucee4\ub125\ud130 \uc608\uc81c\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">$ java -jar producer\/target\/kafka-samples-producer-1.0-SNAPSHOT-jar-with-dependencies.jar<\/code><\/pre>\n<p>\uc0dd\uc131\uae30\uc5d0 \uc785\ub825\ud558\ub294 \ubaa8\ub4e0 \ub77c\uc778\uc5d0 \ub300\ud574 \ub2e4\uc74c\uacfc \uac19\uc740 \ud504\ub85c\ub4c0\uc11c\uc758 \ub77c\uc778\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-bash\">RECEIVED: com.couchbase.kafka.DCPEvent@4e44cb88<\/code><\/pre>\n<p>\uc774 \uc0d8\ud50c\uc740 \ud398\uc774\ub85c\ub4dc\ub97c Kafka\ub85c \ubcf4\ub0b4\uae30 \uc9c1\uc804\uc5d0 \ud544\ud130 \ud074\ub798\uc2a4 \uad6c\ud604\uc5d0\uc11c \uc774\ub97c \uc791\uc131\ud569\ub2c8\ub2e4. Kafka\uac00 \uc774\ub7ec\ud55c \uba54\uc2dc\uc9c0\ub97c \uc5b4\ub5bb\uac8c \uc218\uc2e0\ud558\ub294\uc9c0 \ud655\uc778\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-bash\">$ java -jar consumer\/target\/kafka-samples-consumer-1.0-SNAPSHOT-jar-with-dependencies.jar\r\n1: {\"line\":\"hello, kafka demo!\"}\r\n2: {\"line\":\"hello, this is a test\"}<\/code><\/pre>\n<p>\uc138 \uc11c\ube44\uc2a4\uac00 \ubaa8\ub450 \uc2e4\ud589\ub418\ub294 \ud55c \uacc4\uc18d \ud50c\ub808\uc774\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uce74\ud504\uce74 \ucee4\ub125\ud130\ub85c \uac1c\ubc1c\ud558\uae30<\/h2>\n<p>\uc774\uc81c \ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubd05\uc2dc\ub2e4. \uc138 \uac00\uc9c0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ubaa8\ub450 \uc2e4\ud5d8\uc5d0 \ub9e4\uc6b0 \uce5c\uc219\ud558\uba70, \uc608\ub97c \ub4e4\uc5b4 \uc0dd\uc131\uae30\ub294 \ub2e8 \uba87 \uc904\uc5d0 \ub4e4\uc5b4\uac11\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-java\">public class Example {\r\n    public static void main(String args[]) throws IOException {\r\n        Random random = new Random();\r\n        Cluster cluster = CouchbaseCluster.create(\"couchbase1.vagrant\");\r\n        Bucket bucket = cluster.openBucket();\r\n        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));\r\n        String line;\r\n        do {\r\n            System.out.print(\"&gt; \");\r\n            line = input.readLine();\r\n            if (line == null) {\r\n                break;\r\n            }\r\n            String key = \"key-\" + random.nextInt(10);\r\n            JsonObject value = JsonObject.create().put(\"line\", line);\r\n            bucket.upsert(JsonDocument.create(key, value));\r\n            System.out.printf(\"&gt;&gt; key=%s, value=%sn\", key, value);\r\n        } while (true);\r\n    }\r\n}<\/code><\/pre>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c \uc81c\ub108\ub808\uc774\ud130\ub294 \"couchbase1.vagrant\" \uc778\uc2a4\ud134\uc2a4\uc5d0\uc11c \ubc84\ud0b7 \"default\"\uc5d0 \ub300\ud55c \uc5f0\uacb0\uc744 \uc5f4\uace0 \uc784\uc758\uc758 \ud0a4\uc5d0 \uba54\uc2dc\uc9c0\ub97c \uc501\ub2c8\ub2e4. \uc774\ub97c \ud655\uc7a5\ud558\uc5ec \ub2e4\ub978 \uc720\ud615\uc758 \uc774\ubca4\ud2b8\ub97c \uc804\uc1a1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610 \ub2e4\ub978 \ubc29\ubc95\uc740 \ud0a4\ub97c \uc81c\uac70\ud558\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uae30\ubcf8\uc801\uc73c\ub85c Kafka\uc6a9 Couchbase \ucee4\ub125\ud130\ub294 \uc11c\ubc84 \ubaa8\ub4dc\uc5d0\uc11c \uc2e4\ud589\ub418\uba70, \ud65c\uc131 \uc2a4\ub808\ub4dc\ub97c \ube4c\ub824\uc11c \uc0c8\ub85c\uc6b4 \uc774\ubca4\ud2b8\uc5d0 \ub300\ud574 Couchbase Server\ub97c \uc801\uadf9\uc801\uc73c\ub85c \uc218\uc2e0 \ub300\uae30\ud569\ub2c8\ub2e4. \uc544\uc774\ub514\uc5b4\ub098 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc801\uc6a9\ud560 \uc218 \uc788\ub294 \uba87 \uac00\uc9c0 \uc9c0\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uac00\uc7a5 \ub208\uc5d0 \ub744\ub294 \uac83\uc740 \uad6c\uc131 \ube4c\ub354\ub85c, \uc5f0\uacb0\ud558\ub824\ub294 \uc11c\ube44\uc2a4\uc758 \uc790\uaca9 \uc99d\uba85\uacfc \uc8fc\uc18c\ub97c \uc9c0\uc815\ud560 \uc218 \uc788\uc744 \ubfd0\ub9cc \uc544\ub2c8\ub77c \ub2e4\uc591\ud55c \uc9c1\ub82c\ud654\uae30\uc640 \ud544\ud130 \ud074\ub798\uc2a4\ub3c4 \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc0d8\ud50c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uc774 \uc911 \uba87 \uac00\uc9c0\ub97c \uad6c\ud604\ud569\ub2c8\ub2e4. \ud544\ud130 \ud074\ub798\uc2a4\uac00 \uac00\uc7a5 \uac04\ub2e8\ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-java\">\r\npublic class SampleFilter implements Filter {\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public boolean pass(DCPEvent dcpEvent) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(\"RECEIVED: \" + dcpEvent);\r\n\u00a0 \u00a0 \u00a0 \u00a0 return true;\r\n\u00a0 \u00a0 }\r\n}\r\n<\/code><\/pre>\n<p>\uc5ec\uae30\uc5d0\uc11c \uc6d0\ud558\ub294 \uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc218\ud45c\ub97c \uc785\ub825\ud560 \uc218 \uc788\uc73c\uba70, \ub2e4\uc74c\uacfc \uac19\uc740 \uacbd\uc6b0<span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">pass()<\/code><span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span>\ubc18\ud658 <span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">false<\/code>\ub97c \uc785\ub825\ud558\uba74 \ucee4\ub125\ud130\ub294 \uba54\uc2dc\uc9c0\ub97c \uc0ad\uc81c\ud558\uace0 Kafka\ub85c \uc804\uc1a1\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ucee4\ub125\ud130 \ubc30\ud3ec\uc640 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \uae30\ubcf8 \uc778\ucf54\ub354\ub294 \ubaa8\ub4e0 \uba54\uc2dc\uc9c0\ub97c JSON\uc73c\ub85c \ud45c\ud604\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\uc9c0\ub9cc \ud544\uc694\ud55c \uac83\uc774 \uc544\ub2d0 \uc218 \uc788\uc73c\ubbc0\ub85c \ub2e4\uc74c\uacfc \uac19\uc774 \uc801\uc6a9\ud558\uace0 \ubcc0\ud658\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">DCPEvent<\/code><span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span>\uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud558\uace0 \ubc14\uc774\ud2b8 \ubc30\uc5f4\uc744 \ubc18\ud658\ud558\uba70, \uc774 \ubc30\uc5f4\uc740 Kafka\uc5d0 \uc800\uc7a5\ub429\ub2c8\ub2e4. \uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \uc774\ubca4\ud2b8\ub97c \ubb38\uc790\uc5f4 \ud45c\ud604\uc73c\ub85c \ubcc0\ud658\ud558\uae30\ub9cc \ud569\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">\r\npublic class SampleEncoder extends AbstractEncoder {\r\n\u00a0 \u00a0 public SampleEncoder(final VerifiableProperties properties) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 super(properties);\r\n\u00a0 \u00a0 }\r\n\r\n\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public byte[] toBytes(final DCPEvent dcpEvent) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 if (dcpEvent.message() instanceof MutationMessage) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 MutationMessage message = (MutationMessage) dcpEvent.message();\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return message.content().toString(CharsetUtil.UTF_8).getBytes();\r\n\u00a0 \u00a0 \u00a0 \u00a0 } else {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return dcpEvent.message().toString().getBytes();\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 }\r\n}\r\n<\/code><\/pre>\n<p>\uace0\uae09 \uc124\uc815\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">\uc0c1\ud0dc \uc9c1\ub82c\ud654\uae30<\/code><span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span>\uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud569\ub2c8\ub2e4. \uc774\ub97c \uad6c\ud604\ud558\uba74 \ub77c\uc774\ube0c\ub7ec\ub9ac\uac00 \uc2a4\ud2b8\ub9bc \ucee4\uc11c\ub97c \ucd94\uc801\ud558\ub294 \ubc29\ubc95(\uc989, \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \ub0b4\uc758 \ubaa8\ub4e0 \ud30c\ud2f0\uc158\uc758 \uc2dc\ud000\uc2a4 \ubc88\ud638)\uacfc \ucee4\ub125\ud130 \uc7ac\uc2dc\uc791 \ud6c4 \ub2e4\uc2dc \uc2dc\uc791\ud560\uc9c0 \uc5ec\ubd80\ub97c \uc81c\uc5b4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubc30\ud3ec\ud310\uc5d0\ub294 \uc0c1\ud0dc \uc9c1\ub82c\ud654\uae30\uc758 Zookeeper \uad6c\ud604\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc5ec\uae30 \uc0d8\ud50c\uc5d0\uc11c\ub294 \ub2e4\uc74c\uc744 \uad6c\ud604\ud588\uc2b5\ub2c8\ub2e4. <code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">\ub110 \uc0c1\ud0dc \uc9c1\ub82c\ud654\uae30<\/code><span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span>\ub294 \uc544\ubb34\uac83\ub3c4 \uc720\uc9c0\ud558\uc9c0 \uc54a\uc9c0\ub9cc \ucd5c\uc18c\ud55c\uc758 \uad6c\ud604\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n<pre><code class=\"language-java\">\r\npublic class NullStateSerializer implements StateSerializer {\r\n\u00a0 \u00a0 public NullStateSerializer(final CouchbaseKafkaEnvironment environment) {\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public void dump(BucketStreamAggregatorState aggregatorState) {\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public void dump(BucketStreamAggregatorState aggregatorState, short partition) {\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public BucketStreamAggregatorState load(BucketStreamAggregatorState aggregatorState) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 return new BucketStreamAggregatorState(aggregatorState.name());\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public BucketStreamState load(BucketStreamAggregatorState aggregatorState, short partition) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 return new BucketStreamState(partition, 0, 0, 0xffffffff, 0, 0xffffffff);\r\n\u00a0 \u00a0 }\r\n}\r\n<\/code><\/pre>\n<p>\ub370\ubaa8 \ud074\ub7ec\uc2a4\ud130\uc758 \ub9c8\uc9c0\ub9c9 \uad6c\uc131 \uc694\uc18c\ub294 Kafka \uc18c\ube44\uc790\uc785\ub2c8\ub2e4.<span style=\"color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; line-height: 25.6px; text-align: start;\">\u00a0<\/span><code style=\"box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; padding: 0.2em 0px; margin: 0px; border-radius: 3px; color: #333333; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">AbstractConsumer<\/code>\ub294 \ub9e4\uc6b0 \uc804\ud615\uc801\uc778 \uc18c\ube44\uc790 \uc0ac\ub840\uc785\ub2c8\ub2e4. \ub450 \ubd80\ubd84\uc73c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4: \ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc73c\uba70, \uce74\ud504\uce74 \uc8fc\uc81c\uc5d0 \ub300\ud55c \ubd80\ud2b8\uc2a4\ud2b8\ub7a9\uacfc \ud3ec\uc9c0\uc154\ub2dd\uc744 \uad6c\ud604\ud558\ub294 <span style=\"color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; line-height: 21.76px; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">PrintConsumer<\/span>\ub97c \uc0ac\uc6a9\ud558\uc5ec \"\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\"\uc744 \uc804\ub2ec\ud558\uac70\ub098 \uc804\ub2ec\ub418\ub294 \ubaa8\ub4e0 \uba54\uc2dc\uc9c0\ub97c \ucd9c\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <span style=\"color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; line-height: 21.76px; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">AbstractConsumer<\/span>:<\/p>\n<pre><code class=\"language-java\">\r\npublic class PrintConsumer extends AbstractConsumer {\r\n\u00a0 \u00a0 public PrintConsumer(String[] seedBrokers, int port) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 super(seedBrokers, port);\r\n\u00a0 \u00a0 }\r\n\r\n\r\n\u00a0 \u00a0 public PrintConsumer(String seedBroker, int port) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 super(seedBroker, port);\r\n\u00a0 \u00a0 }\r\n\r\n\r\n\u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 public void handleMessage(long offset, byte[] bytes) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(String.valueOf(offset) + \": \" + new String(bytes));\r\n\u00a0 \u00a0 }\r\n}\r\n<\/code><\/pre>\n<p>\uc5ec\uae30\uc5d0 \uc788\ub294 \ub2e4\ub978 \uc608\uc81c\uc5d0\uc11c\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uc0d8\ud50c \uc18c\ube44\uc790\ub97c \uc218\uc815\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubaa8\ub4e0 \uac83\uc744 Couchbase Server\ub85c \ub2e4\uc2dc \uc804\uc1a1\ud558\uc5ec \ud68c\ub85c\ub97c \ub2eb\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. Kafka\ub294 Couchbase Server\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \ubd84\uc0b0 \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc774\ubbc0\ub85c \uc790\uccb4 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c \uc2e4\ud589\ud560 \ub54c \uc774 \uc810\uc744 \uc5fc\ub450\uc5d0 \ub450\uace0 \uadf8\uc5d0 \ub530\ub77c main() \ud568\uc218\ub97c \uc870\uc815\ud558\uc138\uc694. \uc774 \uc0d8\ud50c\uc5d0\uc11c\ub294 \ud558\ub098\uc758 \ud30c\ud2f0\uc158, \ud30c\ud2f0\uc158(<span style=\"color: #333333; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 13.6px; line-height: 21.76px; text-align: start; background-color: rgba(0, 0, 0, 0.0392157);\">0<\/span>), \ub530\ub77c\uc11c \uba54\uc778 \ud654\uba74\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-java\">public class Example {\r\n    public static void main(String args[]) {\r\n        PrintConsumer example = new PrintConsumer(\"kafka1.vagrant\", 9092);\r\n        example.run(\"default\", 0);\r\n    }\r\n}<\/code><\/pre>\n<p>\ubb3c\ub860 \ud504\ub85c\ub355\uc158 \ud074\ub7ec\uc2a4\ud130\uc5d0\uc11c\ub294 \ub458 \uc774\uc0c1\uc758 \ud30c\ud2f0\uc158\uc744 \uc2e4\ud589\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>\uc774 \uae00\uc774 Couchbase\uc640 \uce74\ud504\uce74\ub97c \uc2dc\uc791\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\uc5c8\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4. \uac74\ubc30!<\/p>","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: A Kafka producer [&hellip;]<\/p>","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":[1295,1487],"ppma_author":[8995],"class_list":["post-2010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-connectors","tag-kafka"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\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\/ko\/kafka-and-couchbase-up-and-running-in-10-minutes\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\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: A Kafka producer [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/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=\"article:modified_time\" content=\"2020-02-03T12:33:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/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\ubd84\" \/>\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\",\"dateModified\":\"2020-02-03T12:33:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/\"},\"wordCount\":1013,\"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\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"connectors\",\"kafka\"],\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"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\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-21T19:13:26+00:00\",\"dateModified\":\"2020-02-03T12:33:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@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\/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-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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@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\":\"ko-KR\",\"@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\/ko\/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\/ko\/kafka-and-couchbase-up-and-running-in-10-minutes\/","og_locale":"ko_KR","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: A Kafka producer [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/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","article_modified_time":"2020-02-03T12:33:05+00:00","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/11\/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\ubd84"},"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","dateModified":"2020-02-03T12:33:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/"},"wordCount":1013,"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\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["connectors","kafka"],"articleSection":["Uncategorized"],"inLanguage":"ko-KR","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\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-01-21T19:13:26+00:00","dateModified":"2020-02-03T12:33:05+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/kafka-and-couchbase-up-and-running-in-10-minutes\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@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\/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-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":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@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":"\uc138\ub974\uac8c\uc774 \uc544\ube0c\uc81c\uc608\ud504, SDK \uc5d4\uc9c0\ub2c8\uc5b4, \uce74\uc6b0\uce58\ubca0\uc774\uc2a4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@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":"\uc138\ub974\uac8c\uc774 \uc544\ube0c\uc81c\uc608\ud504\ub294 Couchbase\uc758 SDK \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. \uc138\ub974\uac8c\uc774 \uc544\ube0c\uc81c\uc608\ud504\ub294 Couchbase \ubcf5\uc81c \ud504\ub85c\ud1a0\ucf5c\uc778 DCP\ub97c \uad6c\ud604\ud558\ub294 \uae30\ubcf8 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 Kafka \ucee4\ub125\ud130\uc758 \uac1c\ubc1c\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c Couchbase\uc6a9 PHP SDK\ub97c \uc720\uc9c0 \uad00\ub9ac\ud569\ub2c8\ub2e4.","sameAs":["https:\/\/x.com\/avsej"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/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":"\uc138\ub974\uac8c\uc774 \uc544\ube0c\uc81c\uc608\ud504\ub294 Couchbase\uc758 SDK \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. \uc138\ub974\uac8c\uc774 \uc544\ube0c\uc81c\uc608\ud504\ub294 Couchbase \ubcf5\uc81c \ud504\ub85c\ud1a0\ucf5c\uc778 DCP\ub97c \uad6c\ud604\ud558\ub294 \uae30\ubcf8 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc640 Kafka \ucee4\ub125\ud130\uc758 \uac1c\ubc1c\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c Couchbase\uc6a9 PHP SDK\ub97c \uc720\uc9c0 \uad00\ub9ac\ud569\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/25"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2010"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2010\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2010"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}