{"id":39209,"date":"2023-07-31T13:50:46","date_gmt":"2023-07-31T04:50:46","guid":{"rendered":"https:\/\/8gfg.shop\/blog\/?p=39209"},"modified":"2023-07-31T13:50:46","modified_gmt":"2023-07-31T04:50:46","slug":"synchronous-and-asynchronous-communication-in-backend-services-using-queues-and-messaging","status":"publish","type":"post","link":"https:\/\/8gfg.shop\/blog\/development\/synchronous-and-asynchronous-communication-in-backend-services-using-queues-and-messaging","title":{"rendered":"\ubc31\uc5d4\ub4dc \uc11c\ube44\uc2a4\uc5d0\uc11c\uc758 \ub3d9\uae30\uc640 \ube44\ub3d9\uae30 \ud1b5\uc2e0: \ud050\uc640 \uba54\uc2dc\uc9d5 \ud65c\uc6a9"},"content":{"rendered":"
\ubc31\uc5d4\ub4dc \uc2dc\uc2a4\ud15c\uc5d0\uc11c\ub294 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\uba70, \uc774\ub97c \uc704\ud574\uc11c\ub294 \uc5ec\ub7ec \uc11c\ube44\uc2a4 \ub2e8\uc704\ub85c \ubd84\ub9ac\ub418\uc5b4 \uc791\uc5c5\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uc11c\ube44\uc2a4 \ub2e8\uc704\uc5d0\uc11c\ub294 \uc11c\ub85c \ub2e4\ub978 \ud504\ub85c\uc138\uc2a4\ub098 \uc2dc\uc2a4\ud15c\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub54c, \ub3d9\uae30\uc801\uc778 \ubc29\ubc95\uacfc \ube44\ub3d9\uae30\uc801\uc778 \ubc29\ubc95\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub3d9\uae30\uc801\uc778 \ubc29\ubc95\uc740 \uc694\uccad\uc744 \ubcf4\ub0b8 \ud6c4\uc5d0 \uc751\ub2f5\uc774 \uc62c \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9ac\ub294 \ubc29\uc2dd\uc774\uba70, \ube44\ub3d9\uae30\uc801\uc778 \ubc29\ubc95\uc740 \uc694\uccad\uc744 \ubcf4\ub0b8 \ud6c4\uc5d0 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc73c\uba70, \uc751\ub2f5\uc774 \uc624\uba74 \ucc98\ub9ac\ud558\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. \uc774\ubc88\uc5d0\ub294 \ubc31\uc5d4\ub4dc \uc11c\ube44\uc2a4\uc5d0\uc11c\uc758 \ub3d9\uae30\uc640 \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n
\ube44\ub3d9\uae30\uc801\uc778 \ubc29\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud560 \ub54c, \uba54\uc2dc\uc9c0 \ud050\ub97c \uc774\uc6a9\ud558\ub294 \uac83\uc774 \uc77c\ubc18\uc801\uc785\ub2c8\ub2e4. \uba54\uc2dc\uc9c0 \ud050\ub294 \ub370\uc774\ud130\ub97c \ube44\ub3d9\uae30\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \uc911\uac04 \ub9e4\uac1c\uccb4 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud558\ub294 \uce21\uc5d0\uc11c\ub294 \uba54\uc2dc\uc9c0\ub97c \ud050\uc5d0 \ub123\uace0, \uc218\uc2e0\ud558\ub294 \uce21\uc5d0\uc11c\ub294 \ud050\uc5d0\uc11c \uba54\uc2dc\uc9c0\ub97c \uac00\uc838\uc640 \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n
\uba54\uc2dc\uc9c0 \ud050\ub294 \ub2e4\uc591\ud55c \ud615\ud0dc\ub85c \uc874\uc7ac\ud558\uc9c0\ub9cc, \uac00\uc7a5 \uc77c\ubc18\uc801\uc778 \ud615\ud0dc\ub294 RabbitMQ\ub098 Kafka \ub4f1\uc758 \uc624\ud508\uc18c\uc2a4 \uba54\uc2dc\uc9c0 \ube0c\ub85c\ucee4\uc785\ub2c8\ub2e4. \uc774\ub4e4 \uba54\uc2dc\uc9c0 \ube0c\ub85c\ucee4\ub294 \uba54\uc2dc\uc9c0\ub97c \uc218\uc2e0\ud558\uace0, \ud050\uc5d0 \uc800\uc7a5\ud558\uba70, \uc774\ub97c \ud544\uc694\ub85c \ud558\ub294 \uc11c\ube44\uc2a4\uc5d0\uc11c \uba54\uc2dc\uc9c0\ub97c \uac00\uc838\uc640 \ucc98\ub9ac\ud558\uac8c \ub429\ub2c8\ub2e4.<\/p>\n
\uc774\ub7ec\ud55c \uba54\uc2dc\uc9c0 \ud050\ub97c \uc774\uc6a9\ud558\uba74 \ucc98\ub9ac\ub7c9\uc744 \ub192\uc77c \uc218 \uc788\uc73c\uba70, \ubcd1\ub82c \ucc98\ub9ac\ub3c4 \uac00\ub2a5\ud569\ub2c8\ub2e4. \uc774\ub97c \ud1b5\ud574 \uc2dc\uc2a4\ud15c\uc758 \ud655\uc7a5\uc131\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\ub3d9\uae30\uc801\uc778 \ubc29\uc2dd\uc740 \uc694\uccad\uc744 \ubcf4\ub0b8 \ud6c4\uc5d0 \uc751\ub2f5\uc744 \ubc1b\uc744 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9ac\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4. \uc774 \ubc29\uc2dd\uc740 \uc694\uccad\uc744 \ubcf4\ub0b4\uace0, \uc751\ub2f5\uc744 \ubc1b\uc744 \ub54c\uae4c\uc9c0 \ub300\uae30\ud558\ubbc0\ub85c, \uc694\uccad\uc774 \ub05d\ub0a0 \ub54c\uae4c\uc9c0 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n
\ubc18\uba74, \ube44\ub3d9\uae30\uc801\uc778 \ubc29\uc2dd\uc740 \uc694\uccad\uc744 \ubcf4\ub0b4\uace0, \uc751\ub2f5\uc744 \ubc1b\uc9c0 \uc54a\ub294 \ub3d9\uc548 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ubc29\uc2dd\uc740 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 \ub370 \uc2dc\uac04\uc774 \uac78\ub9b4 \uacbd\uc6b0, \ub2e4\ub978 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud558\uba74\uc11c \uc2dc\uac04\uc744 \uc808\uc57d\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uba54\uc2dc\uc9c0 \ud050\ub97c \uc774\uc6a9\ud55c \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc744 \uad6c\ud604\ud558\ub294 \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n
\uba54\uc2dc\uc9c0 \ud050\ub97c \uc774\uc6a9\ud55c \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc744 \uad6c\ud604\ud558\ub294 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n
import pika\n\n# RabbitMQ \uc5f0\uacb0 \uc124\uc815\nconnection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))\nchannel = connection.channel()\n\n# \uba54\uc2dc\uc9c0 \ud050 \uc124\uc815\nchannel.queue_declare(queue='hello')\n\n# \uba54\uc2dc\uc9c0 \ubcf4\ub0b4\uae30\nchannel.basic_publish(exchange='', routing_key='hello', body='Hello World!')\n\n# \uba54\uc2dc\uc9c0 \ubc1b\uae30\ndef callback(ch, method, properties, body):\n print(\"Received %r\" % body)\n\nchannel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)\n\nchannel.start_consuming()<\/code><\/pre>\n\uc774 \ucf54\ub4dc\ub294 RabbitMQ\ub97c \uc774\uc6a9\ud558\uc5ec \uba54\uc2dc\uc9c0 \ud050\ub97c \uad6c\ud604\ud558\uace0, \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\ub294 \uce21\uc5d0\uc11c\ub294 \ud050\uc5d0 \ub370\uc774\ud130\ub97c \uc804\uc1a1\ud558\uba70, \uba54\uc2dc\uc9c0\ub97c \uc218\uc2e0\ud558\ub294 \uce21\uc5d0\uc11c\ub294 \ud050\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uac00\uc838\uc640 \ucc98\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n
\uc774\ucc98\ub7fc, \uba54\uc2dc\uc9c0 \ud050\ub97c \uc774\uc6a9\ud558\uc5ec \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc744 \uad6c\ud604\ud558\uba74, \uc11c\ube44\uc2a4 \uac04\uc758 \uc758\uc874\uc131\uc744 \uc904\uc77c \uc218 \uc788\uc73c\uba70, \uc2dc\uc2a4\ud15c\uc758 \ud655\uc7a5\uc131\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n
\uacb0\ub860<\/h1>\n
\uc774\ubc88\uc5d0\ub294 \ubc31\uc5d4\ub4dc \uc11c\ube44\uc2a4\uc5d0\uc11c\uc758 \ub3d9\uae30\uc640 \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \ub3d9\uae30\uc801\uc778 \ubc29\uc2dd\uc740 \uc694\uccad\uc744 \ubcf4\ub0b8 \ud6c4\uc5d0 \uc751\ub2f5\uc744 \ubc1b\uc744 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9ac\ub294 \ubc29\uc2dd\uc774\uba70, \ube44\ub3d9\uae30\uc801\uc778 \ubc29\uc2dd\uc740 \uc694\uccad\uc744 \ubcf4\ub0b4\uace0, \uc751\ub2f5\uc744 \ubc1b\uc9c0 \uc54a\ub294 \ub3d9\uc548 \ub2e4\ub978 \uc791\uc5c5\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub294 \ubc29\uc2dd\uc785\ub2c8\ub2e4.<\/p>\n
\uba54\uc2dc\uc9c0 \ud050\ub97c \uc774\uc6a9\ud558\uc5ec \ube44\ub3d9\uae30 \ud1b5\uc2e0\uc744 \uad6c\ud604\ud558\uba74, \uc11c\ube44\uc2a4 \uac04\uc758 \uc758\uc874\uc131\uc744 \uc904\uc77c \uc218 \uc788\uc73c\uba70, \uc2dc\uc2a4\ud15c\uc758 \ud655\uc7a5\uc131\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba54\uc2dc\uc9c0 \ud050\ub294 RabbitMQ\ub098 Kafka \ub4f1\uc758 \uc624\ud508\uc18c\uc2a4 \uba54\uc2dc\uc9c0 \ube0c\ub85c\ucee4\ub97c \uc774\uc6a9\ud558\uc5ec \uad6c\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"
\ubc31\uc5d4\ub4dc \uc11c\ube44\uc2a4\uc5d0\uc11c\uc758 \ub3d9\uae30\uc640 \ube44\ub3d9\uae30 \ud1b5\uc2e0: \ud050\uc640 \uba54\uc2dc\uc9d5 \ud65c\uc6a9<\/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":[5898,2105,2500,6171,906,5979],"class_list":["post-39209","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development","tag-backend","tag-java","tag-method","tag-msa","tag-world","tag-5979"],"acf":[],"_links":{"self":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts\/39209","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/comments?post=39209"}],"version-history":[{"count":1,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts\/39209\/revisions"}],"predecessor-version":[{"id":39255,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/posts\/39209\/revisions\/39255"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/media\/12882"}],"wp:attachment":[{"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/media?parent=39209"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/categories?post=39209"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/8gfg.shop\/blog\/wp-json\/wp\/v2\/tags?post=39209"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}