{"id":371,"date":"2024-11-06T02:04:56","date_gmt":"2024-11-06T02:04:56","guid":{"rendered":"https:\/\/realstudy.net\/?p=371"},"modified":"2024-11-19T07:20:14","modified_gmt":"2024-11-19T07:20:14","slug":"nats-%eb%a9%94%ec%8b%9c%ec%a7%95-%ec%8b%9c%ec%8a%a4%ed%85%9c","status":"publish","type":"post","link":"https:\/\/realstudy.net\/?p=371&lang=ko","title":{"rendered":"NATS &#8211; \uba54\uc2dc\uc9d5 \uc2dc\uc2a4\ud15c"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"371\" class=\"elementor elementor-371\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f325689 e-flex e-con-boxed e-con e-parent\" data-id=\"f325689\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-769d720 elementor-widget elementor-widget-text-editor\" data-id=\"769d720\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>Go\uc5b8\uc5b4\ub85c \uac1c\ubc1c\ub41c NATS\ub294 \ud074\ub77c\uc6b0\ub4dc \ub124\uc774\ud2f0\ube0c \uc560\ud50c\ub9ac\ucf00\uc774\uc158, IoT \uba54\uc2dc\uc9d5, \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4 \uc544\ud0a4\ud14d\ucc98 \ub4f1\uc744 \uc704\ud55c \uace0\uc131\ub2a5, \uacbd\ub7c9\uc758 \uc624\ud508\uc18c\uc2a4 \uba54\uc2dc\uc9d5 \uc2dc\uc2a4\ud15c\uc785\ub2c8\ub2e4. \ub2e8\uc21c\ud558\uace0 \ud655\uc7a5\uc131\uc774 \ub6f0\uc5b4\ub09c Pub\/Sub \ubaa8\ub378\uc744 \uae30\ubc18\uc73c\ub85c \ud558\uba70, \uc774\uc678\uc5d0 \ub2e4\uc591\ud55c \uba54\uc2dc\uc9c0 \ud328\ud134\uacfc \uae30\ub2a5\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-39255a0 e-flex e-con-boxed e-con e-parent\" data-id=\"39255a0\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c983c79 elementor-widget elementor-widget-text-editor\" data-id=\"c983c79\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>\uc5ec\ub7ec \uba54\uc2dc\uc9c0 \ud050\ub4e4\uc758 \ucc98\ub9ac\ub7c9\uc744 \ube44\uad50\ud558\ub294 \uc544\ub798 \uadf8\ub798\ud504\ub97c \ubcf4\uba74 NATS\uc5d0 \uc131\ub2a5\uc774 \ub6f0\uc5b4\ub0a8\uc744 \uc54c\uc218 \uc788\uc2b5\ub2c8\ub2e4. NATS\ub294 \ubc1c\uc2e0 \ubc0f \uc218\uc2e0 \ucc98\ub9ac\ub7c9 \ubaa8\ub450 \uc57d 180,000 \uc774\uc0c1\uc73c\ub85c \ub9e4\uc6b0 \ub192\uc740 \ucc98\ub9ac\ub7c9\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. Kafka\ub294 \ubc1c\uc2e0 \ucc98\ub9ac\ub7c9\uc740 \uc57d 90,000, \uc218\uc2e0 \ucc98\ub9ac\ub7c9\uc740 \uc57d 60,000\uc73c\ub85c, NATS \ub2e4\uc74c\uc73c\ub85c \ub192\uc740 \ucc98\ub9ac\ub7c9\uc744 \ubcf4\uc774\uc9c0\ub9cc 1\/2\ubc30 \uc815\ub3c4 \ub0ae\uc740 \uc18d\ub3c4\ub97c \ubcf4\uc785\ub2c8\ub2e4.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd055c6 elementor-widget elementor-widget-image\" data-id=\"dd055c6\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"640\" height=\"366\" src=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/image.jpeg\" class=\"attachment-large size-large wp-image-375\" alt=\"\" srcset=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/image.jpeg 720w, https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/image-300x172.jpeg 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ea80ec1 e-flex e-con-boxed e-con e-parent\" data-id=\"ea80ec1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-12e0afa elementor-widget elementor-widget-text-editor\" data-id=\"12e0afa\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>* \uae30\ubcf8 \uba54\uc2dc\uc9c0 \ud328\ud134<br \/>\u00a0 &gt; Publish-Subscribe: \ud55c \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ud2b9\uc815 \uc8fc\uc81c(subject)\ub85c \uba54\uc2dc\uc9c0\ub97c \ubc1c\ud589\ud558\uba74, \uadf8 \uc8fc\uc81c\ub97c \uad6c\ub3c5\ud558\ub294 \ubaa8\ub4e0 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uba54\uc2dc\uc9c0\uac00 \uc804\ub2ec.<br \/>\u00a0 &gt; Request-Reply: \uc694\uccad-\uc751\ub2f5 \ud328\ud134\uc73c\ub85c, \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc694\uccad\uc744 \ubcf4\ub0b4\uace0 \uc751\ub2f5\uc744 \uae30\ub2e4\ub9bc.<br \/>\u00a0 &gt; Queue Groups: \uc791\uc5c5\uc790(\uc6cc\ucee4) \uadf8\ub8f9 \uc0ac\uc774\uc5d0\uc11c \uba54\uc2dc\uc9c0\ub97c \ub85c\ub4dc \ubc38\ub7f0\uc2f1\ud568.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ed22cb4 e-flex e-con-boxed e-con e-parent\" data-id=\"ed22cb4\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b348ccb elementor-widget elementor-widget-heading\" data-id=\"b348ccb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">1. NATS \uc11c\ubc84 \uc2e4\ud589<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5776ca1 elementor-widget elementor-widget-text-editor\" data-id=\"5776ca1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>NATS \uc11c\ubc84 \ubc14\uc774\ub108\ub9ac \ub2e4\uc6b4\ub85c\ub4dc<\/strong>: \ucd5c\uc2e0 \ubc84\uc804\uc758 NATS \uc11c\ubc84 \ubc14\uc774\ub108\ub9ac\ub97c GitHub\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud569\ub2c8\ub2e4.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b7780f elementor-widget elementor-widget-code-highlight\" data-id=\"9b7780f\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>wget https:\/\/github.com\/nats-io\/nats-server\/releases\/download\/v2.10.2\/nats-server-v2.10.2-linux-amd64.tar.gz\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eec43d0 elementor-widget elementor-widget-text-editor\" data-id=\"eec43d0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc555\ucd95 \ud574\uc81c<\/strong>: \ub2e4\uc6b4\ub85c\ub4dc\ud55c \ud30c\uc77c\uc744 \uc555\ucd95 \ud574\uc81c\ud569\ub2c8\ub2e4.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7b9c1dd elementor-widget elementor-widget-code-highlight\" data-id=\"7b9c1dd\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>tar -xzf nats-server-v2.10.2-linux-amd64.tar.gz\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d988e1c elementor-widget elementor-widget-text-editor\" data-id=\"d988e1c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc11c\ubc84 \uc2e4\ud589<\/strong>: NATS \uc11c\ubc84\ub97c \uae30\ubcf8 \uc124\uc815\uc73c\ub85c \uc2e4\ud589.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3cacca3 elementor-widget elementor-widget-code-highlight\" data-id=\"3cacca3\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>nats-server-v2.10.2-linux-amd64\/nats-server<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-375f63f e-flex e-con-boxed e-con e-parent\" data-id=\"375f63f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9d6899d elementor-widget elementor-widget-heading\" data-id=\"9d6899d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">2. Python \ud14c\uc2a4\ud2b8<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b953002 elementor-widget elementor-widget-text-editor\" data-id=\"b953002\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>\ubaa8\ub4e0 \uc608\uc81c\ub294 Python\uc758 nats-py \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. nats-py \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \ub2e4\uc74c \uba85\ub839\uc5b4\ub85c \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-434496c elementor-widget elementor-widget-code-highlight\" data-id=\"434496c\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>pip install nats-py\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c2e41df e-flex e-con-boxed e-con e-parent\" data-id=\"c2e41df\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-412837b elementor-widget elementor-widget-heading\" data-id=\"412837b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">3. Publish-Subscribe<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a89f2e4 elementor-widget elementor-widget-text-editor\" data-id=\"a89f2e4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ubc1c\ud589\uc790<\/strong> : \ud2b9\uc815 \uc8fc\uc81c\ub85c \uba54\uc2dc\uc9c0\ub97c \ubc1c\ud589.<\/div><div><strong>\uad6c\ub3c5\uc790<\/strong> : \ud2b9\uc815 \uc8fc\uc81c\ub97c \uad6c\ub3c5\ud574\uc11c \uba54\uc2dc\uc9c0\ub97c \uc218\uc2e0.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-433fda9 elementor-widget elementor-widget-image\" data-id=\"433fda9\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"359\" height=\"152\" src=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_pubsub.jpg\" class=\"attachment-large size-large wp-image-384\" alt=\"\" srcset=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_pubsub.jpg 359w, https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_pubsub-300x127.jpg 300w\" sizes=\"(max-width: 359px) 100vw, 359px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea0c48d elementor-widget elementor-widget-text-editor\" data-id=\"ea0c48d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ubc1c\ud589\uc790<\/strong> (publisher.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e5706e elementor-widget elementor-widget-code-highlight\" data-id=\"7e5706e\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom nats.aio.client import Client as NATS\n\nasync def main():\n    nc = NATS()\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Message to publish\n    message = \"Hello, this is a NATS message.\"\n\n    # Publish the message\n    await nc.publish(\"greetings\", message.encode('utf-8'))\n    print(\"Published a message.\")\n\n    await nc.close()\n\nif __name__ == '__main__':\n    asyncio.run(main())<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e8226f elementor-widget elementor-widget-text-editor\" data-id=\"1e8226f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uad6c\ub3c5\uc790<\/strong> (subscriber.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9d4c00 elementor-widget elementor-widget-code-highlight\" data-id=\"a9d4c00\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom nats.aio.client import Client as NATS\n\nasync def message_handler(msg):\n    data = msg.data.decode('utf-8')\n    print(f\"Received message: {data}\")\n\nasync def main():\n    nc = NATS()\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Subscribe to the subject\n    await nc.subscribe(\"greetings\", cb=message_handler)\n    print(\"Subscribed to subject 'greetings'.\")\n\n    # Keep the subscriber running\n    while True:\n        await asyncio.sleep(1)\n\nif __name__ == '__main__':\n    asyncio.run(main())\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2b37bb6 elementor-widget elementor-widget-text-editor\" data-id=\"2b37bb6\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ud14c\uc2a4\ud2b8 \uc2e4\ud589<\/strong><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a8bdb07 elementor-widget elementor-widget-code-highlight\" data-id=\"a8bdb07\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp># Run the Subscriber\npython subscriber.py\n\n# In another terminal, Run the Publisher\npython publisher.py<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b905c8b e-flex e-con-boxed e-con e-parent\" data-id=\"b905c8b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-402eb9b elementor-widget elementor-widget-heading\" data-id=\"402eb9b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">4. Request-Reply<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-65b7c16 elementor-widget elementor-widget-text-editor\" data-id=\"65b7c16\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc694\uccad\uc790<\/strong> : \ud2b9\uc815 \uc8fc\uc81c\ub85c \uc694\uccad \uba54\uc2dc\uc9c0\ub97c \uc1a1\uc2e0.<\/div><div><strong>\uc751\ub2f5\uc790<\/strong> : \ud2b9\uc815 \uc8fc\uc81c\ub97c \uad6c\ub3c5\ud558\uace0 \uc694\uccad\uc5d0 \uc751\ub2f5.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a88656a elementor-widget elementor-widget-image\" data-id=\"a88656a\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"359\" height=\"195\" src=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_reqrep.jpg\" class=\"attachment-large size-large wp-image-389\" alt=\"\" srcset=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_reqrep.jpg 359w, https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_reqrep-300x163.jpg 300w\" sizes=\"(max-width: 359px) 100vw, 359px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5252c37 elementor-widget elementor-widget-text-editor\" data-id=\"5252c37\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc694\uccad\uc790<\/strong> (requester.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0ef619e elementor-widget elementor-widget-code-highlight\" data-id=\"0ef619e\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom nats.aio.client import Client as NATS\nfrom nats.aio.errors import ErrTimeout\n\nasync def main():\n    nc = NATS()\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Request message\n    message = \"What is the current time?\"\n\n    try:\n        # Send a request\n        response = await nc.request(\"time.request\", message.encode('utf-8'), timeout=2)\n        print(f\"Received response: {response.data.decode('utf-8')}\")\n    except ErrTimeout:\n        print(\"Request timed out.\")\n\n    await nc.close()\n\nif __name__ == '__main__':\n    asyncio.run(main())<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8057edb elementor-widget elementor-widget-text-editor\" data-id=\"8057edb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc751\ub2f5\uc790<\/strong> (replier.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2b2aef elementor-widget elementor-widget-code-highlight\" data-id=\"f2b2aef\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom datetime import datetime\nfrom nats.aio.client import Client as NATS\n\nasync def main():\n    nc = NATS()\n\n    async def request_handler(msg):\n        # Print the request message\n        request = msg.data.decode('utf-8')\n        print(f\"Received request: {request}\")\n\n        # Generate current time\n        current_time = datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n        response = f\"The current time is {current_time}.\"\n\n        # Send the response\n        print(f\"response subject: {msg.reply}\")\n        await nc.publish(msg.reply, response.encode('utf-8'))\n        print(\"Sent a response.\")\n\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Subscribe to the subject\n    await nc.subscribe(\"time.request\", cb=request_handler)\n    print(\"Subscribed to subject 'time.request' and ready to handle requests.\")\n\n    # Keep the replier running\n    while True:\n        await asyncio.sleep(1)\n\nif __name__ == '__main__':\n    asyncio.run(main())<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36d7e88 elementor-widget elementor-widget-text-editor\" data-id=\"36d7e88\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ud14c\uc2a4\ud2b8 \uc2e4\ud589<\/strong><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28b7c5d elementor-widget elementor-widget-code-highlight\" data-id=\"28b7c5d\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp># Run the Subscriber\npython replier.py\n\n# In another terminal, Run the Publisher\npython requester.py<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e803f9b e-flex e-con-boxed e-con e-parent\" data-id=\"e803f9b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-70486cd elementor-widget elementor-widget-heading\" data-id=\"70486cd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">5. Queue Groups (\ub85c\ub4dc \ubc38\ub7f0\uc2f1)<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3376115 elementor-widget elementor-widget-text-editor\" data-id=\"3376115\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>\uc5ec\ub7ec \uc791\uc5c5\uc790(\uc6cc\ucee4)\uac00 \uac19\uc740 \ud050 \uadf8\ub8f9\uc5d0 \uac00\uc785\ud558\uc5ec \uc791\uc5c5\uc744 \ubd84\uc0b0 \ucc98\ub9ac.<\/div><div>\uba54\uc2dc\uc9c0\ub294 \ud050 \uadf8\ub8f9 \ub0b4\uc758 \ud55c \uc791\uc5c5\uc790\uc5d0\uac8c\ub9cc \uc804\ub2ec\ub428.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fe5c9d7 elementor-widget elementor-widget-image\" data-id=\"fe5c9d7\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"385\" height=\"152\" src=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_queue.jpg\" class=\"attachment-large size-large wp-image-393\" alt=\"\" srcset=\"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_queue.jpg 385w, https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_queue-300x118.jpg 300w\" sizes=\"(max-width: 385px) 100vw, 385px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-236391d elementor-widget elementor-widget-text-editor\" data-id=\"236391d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc791\uc5c5 \ubc1c\ud589\uc790<\/strong> (task_publisher.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e672e67 elementor-widget elementor-widget-code-highlight\" data-id=\"e672e67\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom nats.aio.client import Client as NATS\n\nasync def main():\n    nc = NATS()\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Publish tasks\n    for i in range(1, 11):\n        task = f\"Task number {i}\"\n        await nc.publish(\"tasks\", task.encode('utf-8'))\n        print(f\"Published task: {task}\")\n        await asyncio.sleep(0.5)\n\n    await nc.close()\n\nif __name__ == '__main__':\n    asyncio.run(main())<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2bbb00 elementor-widget elementor-widget-text-editor\" data-id=\"c2bbb00\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\uc791\uc5c5\uc790<\/strong> (worker.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-237dd80 elementor-widget elementor-widget-code-highlight\" data-id=\"237dd80\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nimport sys\nfrom nats.aio.client import Client as NATS\n\nasync def main(worker_id):\n    nc = NATS()\n\n    async def task_handler(msg):\n        task = msg.data.decode('utf-8')\n        print(f\"Worker {worker_id} processing {task}...\")\n        # Simulate task processing\n        await asyncio.sleep(1)\n        print(f\"Worker {worker_id} completed {task}\")\n\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Subscribe to the subject within a queue group\n    await nc.subscribe(\"tasks\", queue=\"workers\", cb=task_handler)\n    print(f\"Worker {worker_id} has started.\")\n\n    # Keep the worker running\n    while True:\n        await asyncio.sleep(1)\n\nif __name__ == '__main__':\n    worker_id = sys.argv[1] if len(sys.argv) > 1 else '1'\n    asyncio.run(main(worker_id))<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f259a02 elementor-widget elementor-widget-text-editor\" data-id=\"f259a02\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ud14c\uc2a4\ud2b8 \uc2e4\ud589<\/strong><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3e0261d elementor-widget elementor-widget-code-highlight\" data-id=\"3e0261d\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp># Start multiple workers in separate terminals\npython worker.py 1\npython worker.py 2\npython worker.py 3\n\n# In another terminal, Run the Task Publisher\npython task_publisher.py<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7e4f854 e-flex e-con-boxed e-con e-parent\" data-id=\"7e4f854\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20b4f2b elementor-widget elementor-widget-heading\" data-id=\"20b4f2b\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">6. \uba54\uc2dc\uc9c0 \ud5e4\ub354<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7e8b064 elementor-widget elementor-widget-text-editor\" data-id=\"7e8b064\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div>\uba54\uc2dc\uc9c0\uc5d0 \ud5e4\ub354\ub97c \ucd94\uac00\ud558\uc5ec \uba54\ud0c0\ub370\uc774\ud130\ub97c \uc804\ub2ec\ud560 \uc218 \uc788\uc74c.<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b311003 elementor-widget elementor-widget-text-editor\" data-id=\"b311003\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ud5e4\ub354\uc640 \ud568\uaed8 \uba54\uc2dc\uc9c0 \ubc1c\ud589<\/strong> (header_publisher.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9319c97 elementor-widget elementor-widget-code-highlight\" data-id=\"9319c97\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom nats.aio.client import Client as NATS\n\nasync def main():\n    nc = NATS()\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Set headers\n    headers = {\n        \"Content-Type\": \"application\/json\",\n        \"X-Request-ID\": \"12345\"\n    }\n\n    # Message to publish\n    message = '{\"message\": \"This message includes headers.\"}'\n\n    # Publish the message with headers\n    await nc.publish(\"updates\", message.encode('utf-8'), headers=headers)\n    print(\"Published a message with headers.\")\n\n    await nc.close()\n\nif __name__ == '__main__':\n    asyncio.run(main())<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8675414 elementor-widget elementor-widget-text-editor\" data-id=\"8675414\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ud5e4\ub354\ub97c \uc77d\ub294 \uad6c\ub3c5\uc790<\/strong> (header_subscriber.py)<\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b57cbb4 elementor-widget elementor-widget-code-highlight\" data-id=\"b57cbb4\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp>import asyncio\nfrom nats.aio.client import Client as NATS\n\nasync def main():\n    nc = NATS()\n\n    async def message_handler(msg):\n        data = msg.data.decode('utf-8')\n        headers = msg.headers\n\n        print(f\"Received message: {data}\")\n        if headers:\n            for key, value in headers.items():\n                print(f\"Header {key}: {value}\")\n        else:\n            print(\"No headers received.\")\n\n    await nc.connect(\"nats:\/\/127.0.0.1:4222\")\n\n    # Subscribe to the subject\n    await nc.subscribe(\"updates\", cb=message_handler)\n    print(\"Subscribed to subject 'updates'.\")\n\n    # Keep the subscriber running\n    while True:\n        await asyncio.sleep(1)\n\nif __name__ == '__main__':\n    asyncio.run(main())<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ff17c5 elementor-widget elementor-widget-text-editor\" data-id=\"1ff17c5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div><strong>\ud14c\uc2a4\ud2b8 \uc2e4\ud589<\/strong><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-52c58df elementor-widget elementor-widget-code-highlight\" data-id=\"52c58df\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-tomorrow copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-python line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-python\">\n\t\t\t\t\t<xmp># Run the subscriber\npython header_subscriber.py\n\n# In another terminal, Run the publisher\npython task_publisher.py<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Go\uc5b8\uc5b4\ub85c \uac1c\ubc1c\ub41c NATS\ub294 \ud074\ub77c\uc6b0\ub4dc \ub124\uc774\ud2f0\ube0c \uc560\ud50c\ub9ac\ucf00\uc774\uc158, IoT \uba54\uc2dc\uc9d5, \ub9c8\uc774\ud06c\ub85c\uc11c\ube44\uc2a4 \uc544\ud0a4\ud14d\ucc98 \ub4f1\uc744 \uc704\ud55c \uace0\uc131\ub2a5, \uacbd\ub7c9\uc758 \uc624\ud508\uc18c\uc2a4 \uba54\uc2dc\uc9d5 \uc2dc\uc2a4\ud15c\uc785\ub2c8\ub2e4. \ub2e8\uc21c\ud558\uace0 \ud655\uc7a5\uc131\uc774 \ub6f0\uc5b4\ub09c&hellip;<\/p>\n","protected":false},"author":1,"featured_media":372,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[28],"tags":[],"class_list":["post-371","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computer_kr"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/realstudy.net\/wp-content\/uploads\/2024\/11\/nats_overview.jpeg","_links":{"self":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts\/371","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=371"}],"version-history":[{"count":31,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts\/371\/revisions"}],"predecessor-version":[{"id":996,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/posts\/371\/revisions\/996"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=\/wp\/v2\/media\/372"}],"wp:attachment":[{"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/realstudy.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}