\uba54\uc2dc\uc9d5\uc740 \ubd84\uc0b0 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc8fc\uace0\ubc1b\ub294 \ubc29\uc2dd \uc911 \ud558\ub098\ub85c, \uc2e4\uc2dc\uac04\uc131\uc774 \uc911\uc694\ud55c \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ub9ce\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \uc2a4\ud504\ub9c1 \ubd80\ud2b8\uc640 \uc544\ud30c\uce58 \uce74\ud504\uce74\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9d5\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
\uc544\ud30c\uce58 \uce74\ud504\uce74\ub294 \ub300\uc6a9\ub7c9 \uc2e4\uc2dc\uac04 \ub85c\uadf8\ucc98\ub9ac\uc5d0 \ud2b9\ud654\ub41c \uc624\ud508\uc18c\uc2a4 \uba54\uc2dc\uc9d5 \uc2dc\uc2a4\ud15c\uc785\ub2c8\ub2e4. \ub300\uaddc\ubaa8 \ub370\uc774\ud130 \ucc98\ub9ac\uc5d0 \ucd5c\uc801\ud654\ub418\uc5b4 \uc788\uc73c\uba70, \uc218\ubc31\ub9cc \uac1c\uc758 \uc774\ubca4\ud2b8 \uc2a4\ud2b8\ub9bc\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c, \ub370\uc774\ud130\ub97c \ubcf5\uc81c\ud558\uc5ec \ub0b4\uad6c\uc131\uacfc \uac00\uc6a9\uc131\uc744 \ubcf4\uc7a5\ud558\uba70, \ubd84\uc0b0 \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 \ud544\uc218\uc801\uc778 \uae30\uc220\uc774\ub77c\uace0 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uce74\ud504\uce74\uc5d0\uc11c\ub294 \ub370\uc774\ud130\ub97c \ubcf4\ub0b4\ub294 \uc5ed\ud560\uc744 \ud558\ub294 \ud504\ub85c\ub4c0\uc11c\uc640 \ub370\uc774\ud130\ub97c \ubc1b\uc544 \ucc98\ub9ac\ud558\ub294 \uc5ed\ud560\uc744 \ud558\ub294 \ucee8\uc288\uba38\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc2a4\ud504\ub9c1 \ubd80\ud2b8\uc5d0\uc11c\ub294 \uc774\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574 spring-kafka<\/code> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
@Service\npublic class KafkaProducer {\n private final KafkaTemplate kafkaTemplate;\n private final String topic = \"test-topic\";\n\n public KafkaProducer(KafkaTemplate kafkaTemplate) {\n this.kafkaTemplate = kafkaTemplate;\n }\n\n public void sendMessage(String message) {\n kafkaTemplate.send(topic, message);\n }\n}\n\n@Service\npublic class KafkaConsumer {\n @KafkaListener(topics = \"test-topic\", groupId = \"group-id\")\n public void consume(String message) {\n \/\/ \ub370\uc774\ud130 \ucc98\ub9ac \ub85c\uc9c1\n }\n}<\/code><\/pre>\n\uc704\uc758 \ucf54\ub4dc\ub294 KafkaProducer<\/code>\uc640 KafkaConsumer<\/code> \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud55c \uac83\uc785\ub2c8\ub2e4. KafkaProducer<\/code>\uc5d0\uc11c\ub294 KafkaTemplate<\/code>\uc744 \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\uace0, KafkaConsumer<\/code>\uc5d0\uc11c\ub294 @KafkaListener<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9c0\ub97c \ubc1b\uc544 \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n
\uc2a4\ud504\ub9c1 \ubd80\ud2b8\ub97c \uc774\uc6a9\ud55c \ube0c\ub85c\ucee4 \uc124\uc815 \ubc0f \uba54\uc2dc\uc9c0 \uc804\uc1a1 \uad6c\ud604<\/h2>\n\uce74\ud504\uce74\uc5d0\uc11c\ub294 \ube0c\ub85c\ucee4\ub780 \ub370\uc774\ud130\ub97c \uc911\uac1c\ud558\ub294 \uc11c\ubc84\ub97c \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc2a4\ud504\ub9c1 \ubd80\ud2b8\uc5d0\uc11c\ub294 application.properties<\/code> \ud30c\uc77c\uc744 \uc774\uc6a9\ud558\uc5ec \ube0c\ub85c\ucee4 \uc124\uc815\uc744 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
spring.kafka.bootstrap-servers=localhost:9092\nspring.kafka.consumer.group-id=group-id\nspring.kafka.consumer.auto-offset-reset=earliest\nspring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer\nspring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer<\/code><\/pre>\n\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c\ub294 spring.kafka.bootstrap-servers<\/code>\ub97c \uc774\uc6a9\ud558\uc5ec \ube0c\ub85c\ucee4\uc758 \uc8fc\uc18c\ub97c \uc124\uc815\ud558\uace0, spring.kafka.producer.value-serializer<\/code>\uc640 spring.kafka.consumer.value-deserializer<\/code>\ub97c \uc774\uc6a9\ud558\uc5ec \uc9c1\ub82c\ud654 \ubc0f \uc5ed\uc9c1\ub82c\ud654\ub97c \uc124\uc815\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n
\uba54\uc2dc\uc9c0\ub97c \uc804\uc1a1\ud558\ub294 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n
@RestController\npublic class KafkaController {\n private final KafkaProducer kafkaProducer;\n\n public KafkaController(KafkaProducer kafkaProducer) {\n this.kafkaProducer = kafkaProducer;\n }\n\n @GetMapping(\"\/kafka\/send\/{message}\")\n public void sendMessage(@PathVariable String message) {\n kafkaProducer.sendMessage(message);\n }\n}<\/code><\/pre>\n\uc704\uc758 \ucf54\ub4dc\uc5d0\uc11c\ub294 KafkaProducer<\/code>\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\ub294 sendMessage<\/code> \uba54\uc18c\ub4dc\ub97c \uc815\uc758\ud558\uc600\uc2b5\ub2c8\ub2e4. \uc774 \uba54\uc18c\ub4dc\ub294 @GetMapping<\/code> \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc774\uc6a9\ud558\uc5ec GET \uc694\uccad\uc744 \ubc1b\uc544 \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/p>\n
\uacb0\ub860<\/h1>\n\uc774\ubc88\uc5d0\ub294 \uc2a4\ud504\ub9c1 \ubd80\ud2b8\uc640 \uc544\ud30c\uce58 \uce74\ud504\uce74\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9d5\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uce74\ud504\uce74\ub294 \ub300\uaddc\ubaa8 \uc2e4\uc2dc\uac04 \ub370\uc774\ud130 \ucc98\ub9ac\uc5d0 \ucd5c\uc801\ud654\ub41c \uba54\uc2dc\uc9d5 \uc2dc\uc2a4\ud15c\uc774\uba70, \uc2a4\ud504\ub9c1 \ubd80\ud2b8\uc5d0\uc11c\ub294 spring-kafka<\/code> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc774\uc6a9\ud558\uc5ec \uac04\ud3b8\ud558\uac8c \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba54\uc2dc\uc9d5\uc744 \uad6c\ud604\ud558\uba74 \ubd84\uc0b0 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ud6a8\uc728\uc801\uc73c\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c, \ub9ce\uc740 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc0ac\uc6a9\ub420 \uac83\uc73c\ub85c \uc608\uc0c1\ub429\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"
Spring Boot\uc640 Apache Kafka\ub97c \uc774\uc6a9\ud55c \uba54\uc2dc\uc9d5 \uad6c\ud604 \ubc29\ubc95<\/p>\n","protected":false},"author":1,"featured_media":12882,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1957],"tags":[2058,5898,2059,2105,2188,2291,2156,5932],"class_list":["post-35129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-application","tag-backend","tag-implementing","tag-java","tag-public","tag-service","tag-spring","tag-spring-boot"],"acf":[],"_links":{"self":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/35129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/comments?post=35129"}],"version-history":[{"count":1,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/35129\/revisions"}],"predecessor-version":[{"id":35226,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/posts\/35129\/revisions\/35226"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/media\/12882"}],"wp:attachment":[{"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/media?parent=35129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/categories?post=35129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/m9js.shop\/blog\/wp-json\/wp\/v2\/tags?post=35129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}