{"id":1546,"date":"2021-01-01T17:17:10","date_gmt":"2021-01-01T08:17:10","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1546"},"modified":"2021-01-01T17:17:10","modified_gmt":"2021-01-01T08:17:10","slug":"spring-boot-kafka-%ec%97%b0%eb%8f%99%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1546","title":{"rendered":"Spring Boot Kafka \uc5f0\ub3d9\ud558\uae30"},"content":{"rendered":"<h1>Spring Boot Kafka \uc5f0\ub3d9\ud558\uae30<\/h1>\n<h2>\uc758\uc874\uc131 \ucd94\uac00<\/h2>\n<pre><code class=\"language-gradle\">dependencies {\n    \/\/ ......\n    implementation &#039;org.springframework.kafka:spring-kafka&#039;\n    \/\/ ......\n}<\/code><\/pre>\n<h2>application.yml \uc218\uc815<\/h2>\n<pre><code class=\"language-yaml\">spring:\n  kafka:\n    consumer:\n      bootstrap-servers: 192.168.98.51:9092\n      group-id: foo\n      # auto-offset-reset: earliest\n      # key-deserializer: org.apache.kafka.common.serialization.StringDeserializer\n      # value-deserializer: org.apache.kafka.common.serialization.StringDeserializer\n    producer:\n      bootstrap-servers: 192.168.98.51:9092\n      # key-serializer: org.apache.kafka.common.serialization.StringSerializer\n      # value-serializer: org.apache.kafka.common.serialization.StringSerializer<\/code><\/pre>\n<h2>Producer \uc0dd\uc131<\/h2>\n<pre><code class=\"language-java\">@Service\npublic class KafkaProducer {\n\n    private static final String TOPIC = &quot;exam&quot;;\n    private final KafkaTemplate&lt;String, String&gt; kafkaTemplate;\n\n    @Autowired\n    public KafkaProducer(KafkaTemplate kafkaTemplate) {\n        this.kafkaTemplate = kafkaTemplate;\n    }\n\n    public void sendMessage(String message) {\n        System.out.printf(&quot;Produce message : %s%n&quot;, message);\n        this.kafkaTemplate.send(TOPIC, message);\n    }\n}<\/code><\/pre>\n<h2>Consumer \uc0dd\uc131<\/h2>\n<pre><code class=\"language-java\">@Service\npublic class KafkaConsumer {\n\n    @KafkaListener(topics = &quot;exam&quot;, groupId = &quot;foo&quot;)\n    public void consume(String message) throws IOException {\n        System.out.printf(&quot;Consumed message : %s%n&quot;, message);\n    }\n}<\/code><\/pre>\n<h2>Controller \uc0dd\uc131<\/h2>\n<pre><code class=\"language-java\">@Api(tags = { &quot;00. Kafka&quot; })\n@RestController\n@RequestMapping(value = &quot;\/v1\/kafka&quot;)\npublic class KafkaController {\n\n    private final KafkaProducer producer;\n\n    @Autowired\n    KafkaController(KafkaProducer producer) {\n        this.producer = producer;\n    }\n\n    @ApiOperation(value = &quot;\uba54\uc2dc\uc9c0 \uc804\uc1a1&quot;, notes = &quot;Kafka \uba54\uc2dc\uc9c0\ub97c \uc804\uc1a1\ud569\ub2c8\ub2e4.&quot;)\n    @PostMapping(&quot;\/&quot;)\n    public String sendMessage(@RequestParam(&quot;message&quot;) String message) {\n        this.producer.sendMessage(message);\n\n        return &quot;success&quot;;\n    }\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Spring Boot Kafka \uc5f0\ub3d9\ud558\uae30 \uc758\uc874\uc131 \ucd94\uac00 dependencies { \/\/ &#8230;&#8230; implementation &#039;org.springframework.kafka:spring-kafka&#039; \/\/ &#8230;&#8230; } application.yml \uc218\uc815 spring: kafka: consumer: bootstrap-servers: 192.168.98.51:9092 group-id: foo # auto-offset-reset: earliest # key-deserializer: org.apache.kafka.common.serialization.StringDeserializer # value-deserializer: org.apache.kafka.common.serialization.StringDeserializer producer: bootstrap-servers: 192.168.98.51:9092 # key-serializer: org.apache.kafka.common.serialization.StringSerializer # value-serializer: org.apache.kafka.common.serialization.StringSerializer Producer \uc0dd\uc131 @Service public class KafkaProducer { private static final String TOPIC =\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=1546\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,1],"tags":[],"class_list":["post-1546","post","type-post","status-publish","format-standard","hentry","category-spring-boot-2-1","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1546"}],"version-history":[{"count":2,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1546\/revisions"}],"predecessor-version":[{"id":1549,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/1546\/revisions\/1549"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1546"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1546"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}