{"id":36705,"date":"2025-12-12T09:25:29","date_gmt":"2025-12-12T02:25:29","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=36705"},"modified":"2025-12-12T09:26:18","modified_gmt":"2025-12-12T02:26:18","slug":"message-broker-la-gi","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/","title":{"rendered":"Message Broker l\u00e0 g\u00ec? C\u00f4ng d\u1ee5ng, M\u00f4 h\u00ecnh &#038; Top C\u00f4ng c\u1ee5 ph\u1ed5 bi\u1ebfn"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-white ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">N\u1ed8I DUNG<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Message-Broker-la-gi\" >Message Broker l\u00e0 g\u00ec?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Loi-ich-noi-bat-khi-su-dung-Message-Broker\" >L\u1ee3i \u00edch n\u1ed5i b\u1eadt khi s\u1eed d\u1ee5ng Message Broker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Message-Broker-hoat-dong-nhu-the-nao\" >Message Broker ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Cac-thanh-phan-cot-loi-trong-he-thong-Message-Broker\" >C\u00e1c th\u00e0nh ph\u1ea7n c\u1ed1t l\u00f5i trong h\u1ec7 th\u1ed1ng Message Broker<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Producer-Publisher\" >Producer (Publisher)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Consumer-Subscriber\" >Consumer (Subscriber)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Queue-Hang-doi\" >Queue (H\u00e0ng \u0111\u1ee3i)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#ExchangeTopic\" >Exchange\/Topic<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Cac-mo-hinh-giao-tiep-pho-bien-cua-Message-Broker\" >C\u00e1c m\u00f4 h\u00ecnh giao ti\u1ebfp ph\u1ed5 bi\u1ebfn c\u1ee7a Message Broker<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Point-to-Point-Queue\" >Point-to-Point (Queue)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#PublishSubscribe-PubSub\" >Publish\/Subscribe (Pub\/Sub)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Top-cac-Message-Broker-pho-bien-tai-Viet-Nam\" >Top c\u00e1c Message Broker ph\u1ed5 bi\u1ebfn t\u1ea1i Vi\u1ec7t Nam<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#RabbitMQ\" >RabbitMQ<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Apache-Kafka\" >Apache Kafka<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Redis-PubSub\" >Redis Pub\/Sub<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#ActiveMQ-Amazon-SQS\" >ActiveMQ \/ Amazon SQS<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#So-sanh-RabbitMQ-va-Kafka-Nen-chon-cai-nao\" >So s\u00e1nh RabbitMQ v\u00e0 Kafka: N\u00ean ch\u1ecdn c\u00e1i n\u00e0o?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Khi-nao-can-su-dung-Message-Broker\" >Khi n\u00e0o c\u1ea7n s\u1eed d\u1ee5ng Message Broker?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Nhung-thach-thuc-khi-su-dung-Message-Broker\" >Nh\u1eefng th\u00e1ch th\u1ee9c khi s\u1eed d\u1ee5ng Message Broker<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/#Ket-luan\" >K\u1ebft lu\u1eadn<\/a><\/li><\/ul><\/nav><\/div>\n<p>Trong c\u00e1c h\u1ec7 th\u1ed1ng hi\u1ec7n \u0111\u1ea1i, \u0111\u1eb7c bi\u1ec7t l\u00e0 microservices, l\u01b0\u1ee3ng d\u1eef li\u1ec7u v\u00e0 s\u1ed1 l\u01b0\u1ee3ng t\u00e1c v\u1ee5 c\u1ea7n x\u1eed l\u00fd song song ng\u00e0y c\u00e0ng l\u1edbn. \u0110\u1ec3 \u0111\u1ea3m b\u1ea3o c\u00e1c d\u1ecbch v\u1ee5 giao ti\u1ebfp v\u1edbi nhau \u1ed5n \u0111\u1ecbnh, kh\u00f4ng b\u1ecb ngh\u1ebdn v\u00e0 v\u1eabn duy tr\u00ec hi\u1ec7u su\u1ea5t cao, c\u00e1c doanh nghi\u1ec7p th\u01b0\u1eddng s\u1eed d\u1ee5ng Message Broker.<\/p>\n<p>B\u00e0i vi\u1ebft n\u00e0y s\u1ebd \u0111i s\u00e2u v\u00e0o t\u00ecm hi\u1ec3u <strong><a href=\"https:\/\/interdata.vn\/blog\/message-broker-la-gi\/\">Message Broker l\u00e0 g\u00ec<\/a><\/strong>, c\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng, l\u1ee3i \u00edch, c\u0169ng nh\u01b0 so s\u00e1nh chi ti\u1ebft gi\u1eefa RabbitMQ v\u00e0 Kafka, gi\u00fap b\u1ea1n l\u00e0m ch\u1ee7 c\u00f4ng ngh\u1ec7 n\u00e0y v\u00e0 \u00e1p d\u1ee5ng hi\u1ec7u qu\u1ea3 v\u00e0o d\u1ef1 \u00e1n th\u1ef1c t\u1ebf.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Message-Broker-la-gi\"><\/span>Message Broker l\u00e0 g\u00ec?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>Message Broker<\/strong> l\u00e0 m\u1ed9t module trung gian gi\u00fap c\u00e1c \u1ee9ng d\u1ee5ng, h\u1ec7 th\u1ed1ng ho\u1eb7c d\u1ecbch v\u1ee5 giao ti\u1ebfp v\u1edbi nhau b\u1eb1ng c\u00e1ch trao \u0111\u1ed5i tin nh\u1eafn (messages). C\u00f4ng c\u1ee5 n\u00e0y cho ph\u00e9p c\u00e1c \u1ee9ng d\u1ee5ng g\u1eedi th\u00f4ng tin m\u00e0 kh\u00f4ng c\u1ea7n bi\u1ebft \u1ee9ng d\u1ee5ng nh\u1eadn \u0111ang \u1edf \u0111\u00e2u, tr\u1ea1ng th\u00e1i ra sao, hay c\u00f3 \u0111ang ho\u1ea1t \u0111\u1ed9ng hay kh\u00f4ng.<\/p>\n<figure id=\"attachment_36706\" aria-describedby=\"caption-attachment-36706\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-36706\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Message-Broker-la-gi.jpg\" alt=\"Message Broker l\u00e0 g\u00ec\" width=\"800\" height=\"500\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Message-Broker-la-gi.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Message-Broker-la-gi-300x188.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Message-Broker-la-gi-768x480.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-36706\" class=\"wp-caption-text\">Message Broker l\u00e0 g\u00ec?<\/figcaption><\/figure>\n<p>Nhi\u1ec1u ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u th\u01b0\u1eddng nh\u1ea7m l\u1eabn gi\u1eefa <strong>Message Queue<\/strong>\u00a0v\u00e0 Message Broker. H\u00e3y ph\u00e2n bi\u1ec7t nhanh nh\u01b0 sau:<\/p>\n<ul>\n<li><strong>Message Queue (H\u00e0ng \u0111\u1ee3i tin nh\u1eafn):<\/strong> L\u00e0 c\u1ea5u tr\u00fac d\u1eef li\u1ec7u l\u01b0u tr\u1eef tin nh\u1eafn theo c\u01a1 ch\u1ebf FIFO (First In, First Out &#8211; V\u00e0o tr\u01b0\u1edbc ra tr\u01b0\u1edbc). \u0110\u00e2y ch\u1ec9 l\u00e0 n\u01a1i ch\u1ee9a tin nh\u1eafn.<\/li>\n<li><strong>Message Broker:<\/strong> L\u00e0 m\u1ed9t h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd to\u00e0n di\u1ec7n. H\u1ec7 th\u1ed1ng n\u00e0y bao g\u1ed3m c\u1ea3 Message Queue b\u00ean trong, nh\u01b0ng b\u1ed5 sung th\u00eam c\u00e1c logic ph\u1ee9c t\u1ea1p nh\u01b0 \u0111\u1ecbnh tuy\u1ebfn (routing), chuy\u1ec3n \u0111\u1ed5i tin nh\u1eafn, x\u00e1c nh\u1eadn (acknowledgement) v\u00e0 b\u1ea3o m\u1eadt.<\/li>\n<\/ul>\n<p>\u0110\u1ec3 tr\u1ea3 l\u1eddi c\u00e2u h\u1ecfi n\u00e0y m\u1ed9t c\u00e1ch d\u1ec5 hi\u1ec3u nh\u1ea5t, h\u00e3y t\u01b0\u1edfng t\u01b0\u1ee3ng m\u1ed9t t\u00ecnh hu\u1ed1ng th\u1ef1c t\u1ebf. B\u1ea1n c\u1ea7n g\u1eedi m\u1ed9t m\u00f3n h\u00e0ng cho kh\u00e1ch h\u00e0ng \u1edf xa. B\u1ea1n s\u1ebd kh\u00f4ng t\u1ef1 m\u00ecnh ch\u1ea1y xe \u0111i giao m\u00f3n h\u00e0ng \u0111\u00f3. Thay v\u00e0o \u0111\u00f3, b\u1ea1n mang h\u00e0ng \u0111\u1ebfn <strong>B\u01b0u \u0111i\u1ec7n<\/strong>. B\u01b0u \u0111i\u1ec7n s\u1ebd nh\u1eadn m\u00f3n h\u00e0ng, ph\u00e2n lo\u1ea1i, l\u01b0u tr\u1eef t\u1ea1m th\u1eddi v\u00e0 \u0111\u1ea3m b\u1ea3o ng\u01b0\u1eddi b\u01b0u t\u00e1 s\u1ebd giao n\u00f3 \u0111\u1ebfn t\u1eadn tay kh\u00e1ch h\u00e0ng.<\/p>\n<p>Trong v\u00ed d\u1ee5 n\u00e0y:<\/p>\n<ul>\n<li>B\u1ea1n l\u00e0 <strong>Producer<\/strong> (Ng\u01b0\u1eddi g\u1eedi).<\/li>\n<li>Kh\u00e1ch h\u00e0ng l\u00e0 <strong>Consumer<\/strong> (Ng\u01b0\u1eddi nh\u1eadn).<\/li>\n<li>M\u00f3n h\u00e0ng l\u00e0 <strong>Message<\/strong> (Tin nh\u1eafn\/D\u1eef li\u1ec7u).<\/li>\n<li>B\u01b0u \u0111i\u1ec7n ch\u00ednh l\u00e0 <strong>Message Broker<\/strong>.<\/li>\n<\/ul>\n<p>Vi\u1ec7c hi\u1ec3u r\u00f5 <strong>Message Broker l\u00e0 g\u00ec<\/strong> s\u1ebd l\u00e0 n\u1ec1n t\u1ea3ng v\u1eefng ch\u1eafc \u0111\u1ec3 b\u1ea1n thi\u1ebft k\u1ebf c\u00e1c h\u1ec7 th\u1ed1ng c\u00f3 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng cao v\u00e0 ho\u1ea1t \u0111\u1ed9ng b\u1ec1n b\u1ec9.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Loi-ich-noi-bat-khi-su-dung-Message-Broker\"><\/span>L\u1ee3i \u00edch n\u1ed5i b\u1eadt khi s\u1eed d\u1ee5ng Message Broker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>C\u00e1c l\u1eadp tr\u00ecnh vi\u00ean Senior ho\u1eb7c Tech Lead th\u01b0\u1eddng y\u00eau c\u1ea7u Junior t\u00ecm hi\u1ec3u \u1ee9ng d\u1ee5ng Message Broker ngay khi b\u1eaft \u0111\u1ea7u d\u1ef1 \u00e1n l\u1edbn. L\u00fd do kh\u00f4ng ph\u1ea3i v\u00ec tr\u00e0o l\u01b0u c\u00f4ng ngh\u1ec7, m\u00e0 v\u00ec nh\u1eefng l\u1ee3i \u00edch thi\u1ebft th\u1ef1c m\u00e0 gi\u1ea3i ph\u00e1p n\u00e0y mang l\u1ea1i cho s\u1ef1 \u1ed5n \u0111\u1ecbnh c\u1ee7a h\u1ec7 th\u1ed1ng.<\/p>\n<ul>\n<li><strong>Gi\u1ea3m s\u1ef1 ph\u1ee5 thu\u1ed9c:<\/strong> Message Broker t\u00e1ch r\u1eddi vai tr\u00f2 gi\u1eefa b\u00ean g\u1eedi v\u00e0 b\u00ean nh\u1eadn, gi\u00fap c\u00e1c th\u00e0nh ph\u1ea7n trong h\u1ec7 th\u1ed1ng kh\u00f4ng ph\u1ea3i li\u00ean k\u1ebft tr\u1ef1c ti\u1ebfp v\u1edbi nhau.<\/li>\n<li><strong>\u0110\u1ed9 tin c\u1eady \u0111\u01b0\u1ee3c \u0111\u1ea3m b\u1ea3o:<\/strong> Broker c\u00f3 kh\u1ea3 n\u0103ng gi\u1eef t\u1ea1m th\u00f4ng \u0111i\u1ec7p khi ph\u00eda nh\u1eadn ch\u01b0a s\u1eb5n s\u00e0ng, gi\u00fap tr\u00e1nh m\u1ea5t d\u1eef li\u1ec7u.<\/li>\n<li><strong>T\u0103ng kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng:<\/strong> H\u1ec7 th\u1ed1ng c\u00f3 th\u1ec3 m\u1edf r\u1ed9ng th\u00eam d\u1ecbch v\u1ee5 m\u1edbi m\u00e0 kh\u00f4ng \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn c\u00e1c th\u00e0nh ph\u1ea7n \u0111ang ho\u1ea1t \u0111\u1ed9ng.<\/li>\n<li><strong>Giao ti\u1ebfp \u0111\u01b0\u1ee3c \u0111\u01a1n gi\u1ea3n h\u00f3a:<\/strong> Cung c\u1ea5p c\u01a1 ch\u1ebf giao ti\u1ebfp th\u1ed1ng nh\u1ea5t, gi\u00fap c\u00e1c \u1ee9ng d\u1ee5ng d\u1ec5 d\u00e0ng k\u1ebft n\u1ed1i v\u00e0 t\u00edch h\u1ee3p v\u1edbi nhau.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Message-Broker-hoat-dong-nhu-the-nao\"><\/span>Message Broker ho\u1ea1t \u0111\u1ed9ng nh\u01b0 th\u1ebf n\u00e0o?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Message Broker ho\u1ea1t \u0111\u1ed9ng d\u1ef1a tr\u00ean m\u00f4 h\u00ecnh g\u1eedi \u2013 nh\u1eadn th\u00f4ng \u0111i\u1ec7p v\u1edbi hai th\u00e0nh ph\u1ea7n ch\u00ednh:<\/p>\n<ul>\n<li><strong>Producer:<\/strong> d\u1ecbch v\u1ee5 g\u1eedi d\u1eef li\u1ec7u (message).<\/li>\n<li><strong>Consumer:<\/strong> d\u1ecbch v\u1ee5 nh\u1eadn v\u00e0 x\u1eed l\u00fd d\u1eef li\u1ec7u.<\/li>\n<\/ul>\n<p>Khi m\u1ed9t th\u00f4ng \u0111i\u1ec7p \u0111\u01b0\u1ee3c g\u1eedi \u0111i, n\u00f3 s\u1ebd \u0111\u01b0\u1ee3c \u0111\u01b0a v\u00e0o <strong>queue<\/strong> (h\u00e0ng \u0111\u1ee3i) ho\u1eb7c <strong>topic<\/strong> (ch\u1ee7 \u0111\u1ec1) b\u00ean trong Message Broker. Broker ti\u1ebfp nh\u1eadn, l\u01b0u tr\u1eef v\u00e0 \u0111\u1ecbnh tuy\u1ebfn th\u00f4ng \u0111i\u1ec7p \u0111\u1ebfn \u0111\u00fang consumer ph\u00f9 h\u1ee3p theo t\u1eebng c\u01a1 ch\u1ebf ho\u1ea1t \u0111\u1ed9ng.<\/p>\n<p>Message Broker c\u0169ng h\u1ed7 tr\u1ee3 <strong>acknowledgment<\/strong> \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o th\u00f4ng \u0111i\u1ec7p \u0111\u01b0\u1ee3c x\u1eed l\u00fd th\u00e0nh c\u00f4ng. N\u1ebfu consumer g\u1eb7p l\u1ed7i, broker c\u00f3 th\u1ec3 t\u1ef1 \u0111\u1ed9ng retry, gi\u00fap h\u1ec7 th\u1ed1ng duy tr\u00ec \u0111\u1ed9 \u1ed5n \u0111\u1ecbnh v\u00e0 \u0111\u1ed9 tin c\u1eady.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cac-thanh-phan-cot-loi-trong-he-thong-Message-Broker\"><\/span>C\u00e1c th\u00e0nh ph\u1ea7n c\u1ed1t l\u00f5i trong h\u1ec7 th\u1ed1ng Message Broker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0110\u1ec3 l\u00e0m vi\u1ec7c hi\u1ec7u qu\u1ea3 v\u1edbi b\u1ea5t k\u1ef3 Message Broker n\u00e0o (nh\u01b0 RabbitMQ hay Kafka), b\u1ea1n c\u1ea7n n\u1eafm v\u1eefng 4 thu\u1eadt ng\u1eef chuy\u00ean ng\u00e0nh d\u01b0\u1edbi \u0111\u00e2y. C\u00e1c t\u00e0i li\u1ec7u k\u1ef9 thu\u1eadt th\u01b0\u1eddng xuy\u00ean s\u1eed d\u1ee5ng nh\u1eefng t\u1eeb n\u00e0y m\u00e0 kh\u00f4ng gi\u1ea3i th\u00edch l\u1ea1i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Producer-Publisher\"><\/span>Producer (Publisher)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Producer l\u00e0 th\u00e0nh ph\u1ea7n kh\u1edfi t\u1ea1o v\u00e0 g\u1eedi tin nh\u1eafn v\u00e0o h\u1ec7 th\u1ed1ng. Trong ki\u1ebfn tr\u00fac Microservices, Producer th\u01b0\u1eddng l\u00e0 service c\u1ea7n y\u00eau c\u1ea7u m\u1ed9t t\u00e1c v\u1ee5 n\u00e0o \u0111\u00f3 \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n. V\u00ed d\u1ee5: Khi ng\u01b0\u1eddi d\u00f9ng \u0111\u1eb7t h\u00e0ng th\u00e0nh c\u00f4ng, &#8220;Order Service&#8221; s\u1ebd \u0111\u00f3ng vai tr\u00f2 l\u00e0 Producer g\u1eedi m\u1ed9t tin nh\u1eafn ch\u1ee9a th\u00f4ng tin \u0111\u01a1n h\u00e0ng.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Consumer-Subscriber\"><\/span>Consumer (Subscriber)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Consumer l\u00e0 th\u00e0nh ph\u1ea7n nh\u1eadn v\u00e0 x\u1eed l\u00fd tin nh\u1eafn. Consumer s\u1ebd k\u1ebft n\u1ed1i \u0111\u1ebfn Message Broker \u0111\u1ec3 l\u1ea5y tin nh\u1eafn v\u1ec1. Ti\u1ebfp t\u1ee5c v\u00ed d\u1ee5 tr\u00ean, &#8220;Email Service&#8221; s\u1ebd \u0111\u00f3ng vai tr\u00f2 l\u00e0 Consumer, nh\u1eadn tin nh\u1eafn t\u1eeb &#8220;Order Service&#8221; \u0111\u1ec3 g\u1eedi email x\u00e1c nh\u1eadn cho kh\u00e1ch h\u00e0ng. M\u1ed9t h\u1ec7 th\u1ed1ng c\u00f3 th\u1ec3 c\u00f3 nhi\u1ec1u Consumer ch\u1ea1y song song \u0111\u1ec3 t\u0103ng t\u1ed1c \u0111\u1ed9 x\u1eed l\u00fd.<\/p>\n<figure id=\"attachment_36708\" aria-describedby=\"caption-attachment-36708\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-36708\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-hoat-dong-cua-Message-Broker-1.jpg\" alt=\"C\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Message Broker\" width=\"800\" height=\"519\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-hoat-dong-cua-Message-Broker-1.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-hoat-dong-cua-Message-Broker-1-300x195.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Cach-hoat-dong-cua-Message-Broker-1-768x498.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-36708\" class=\"wp-caption-text\">C\u00e1ch ho\u1ea1t \u0111\u1ed9ng c\u1ee7a Message Broker<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Queue-Hang-doi\"><\/span>Queue (H\u00e0ng \u0111\u1ee3i)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Queue l\u00e0 n\u01a1i l\u01b0u tr\u1eef tin nh\u1eafn ch\u1edd x\u1eed l\u00fd. B\u1ea1n c\u00f3 th\u1ec3 h\u00ecnh dung Queue gi\u1ed1ng nh\u01b0 m\u1ed9t h\u1ed9p th\u01b0 \u0111\u1ebfn. Tin nh\u1eafn \u0111\u01b0\u1ee3c Producer g\u1eedi \u0111\u1ebfn s\u1ebd n\u1eb1m y\u00ean trong Queue cho \u0111\u1ebfn khi Consumer s\u1eb5n s\u00e0ng l\u1ea5y ch\u00fang \u0111i. N\u1ebfu t\u1ed1c \u0111\u1ed9 g\u1eedi c\u1ee7a Producer nhanh h\u01a1n t\u1ed1c \u0111\u1ed9 x\u1eed l\u00fd c\u1ee7a Consumer, Queue s\u1ebd \u0111\u1ea7y d\u1ea7n l\u00ean. \u0110\u00e2y l\u00e0 l\u00fd do ch\u00fang ta c\u1ea7n c\u01a1 ch\u1ebf gi\u00e1m s\u00e1t \u0111\u1ed9 d\u00e0i c\u1ee7a h\u00e0ng \u0111\u1ee3i.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"ExchangeTopic\"><\/span>Exchange\/Topic<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0110\u00e2y l\u00e0 th\u00e0nh ph\u1ea7n quan tr\u1ecdng gi\u00fap \u0111\u1ecbnh tuy\u1ebfn tin nh\u1eafn, \u0111\u1eb7c bi\u1ec7t trong c\u00e1c Broker m\u1ea1nh m\u1ebd nh\u01b0 RabbitMQ. Producer kh\u00f4ng g\u1eedi tin nh\u1eafn tr\u1ef1c ti\u1ebfp v\u00e0o Queue. Thay v\u00e0o \u0111\u00f3, Producer g\u1eedi tin nh\u1eafn \u0111\u1ebfn <strong>Exchange<\/strong>. D\u1ef1a tr\u00ean c\u00e1c quy t\u1eafc (binding key, routing key), Exchange s\u1ebd quy\u1ebft \u0111\u1ecbnh \u0111\u1ea9y tin nh\u1eafn \u0111\u00f3 v\u00e0o Queue n\u00e0o. C\u01a1 ch\u1ebf n\u00e0y gi\u00fap ph\u00e2n lo\u1ea1i d\u1eef li\u1ec7u c\u1ef1c k\u1ef3 linh ho\u1ea1t.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Cac-mo-hinh-giao-tiep-pho-bien-cua-Message-Broker\"><\/span>C\u00e1c m\u00f4 h\u00ecnh giao ti\u1ebfp ph\u1ed5 bi\u1ebfn c\u1ee7a Message Broker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>T\u00f9y v\u00e0o m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng, b\u1ea1n s\u1ebd c\u1ea5u h\u00ecnh \u1ee9ng d\u1ee5ng Message Broker ho\u1ea1t \u0111\u1ed9ng theo m\u1ed9t trong hai m\u00f4 h\u00ecnh sau. Hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t n\u00e0y gi\u00fap b\u1ea1n ch\u1ecdn \u0111\u00fang ki\u1ebfn tr\u00fac cho b\u00e0i to\u00e1n c\u1ee7a m\u00ecnh.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Point-to-Point-Queue\"><\/span>Point-to-Point (Queue)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Trong m\u00f4 h\u00ecnh n\u00e0y, m\u1ed9t tin nh\u1eafn ch\u1ec9 \u0111\u01b0\u1ee3c x\u1eed l\u00fd b\u1edfi <strong>duy nh\u1ea5t m\u1ed9t Consumer<\/strong>.<\/p>\n<ul>\n<li><strong>C\u01a1 ch\u1ebf:<\/strong> D\u00f9 c\u00f3 nhi\u1ec1u Consumer c\u00f9ng l\u1eafng nghe m\u1ed9t Queue, Broker s\u1ebd chia tin nh\u1eafn theo ki\u1ec3u v\u00f2ng tr\u00f2n (Round-robin) ho\u1eb7c d\u1ef1a tr\u00ean \u0111\u1ed9 r\u1ea3nh r\u1ed7i.<\/li>\n<li><strong>\u1ee8ng d\u1ee5ng:<\/strong> Ph\u00f9 h\u1ee3p cho c\u00e1c t\u00e1c v\u1ee5 c\u1ea7n th\u1ef1c hi\u1ec7n ch\u00ednh x\u00e1c m\u1ed9t l\u1ea7n nh\u01b0 x\u1eed l\u00fd \u0111\u01a1n h\u00e0ng, thanh to\u00e1n, resize \u1ea3nh. B\u1ea1n kh\u00f4ng mu\u1ed1n m\u1ed9t \u0111\u01a1n h\u00e0ng b\u1ecb tr\u1eeb ti\u1ec1n hai l\u1ea7n ch\u1ec9 v\u00ec c\u00f3 hai Consumer c\u00f9ng nh\u1eadn \u0111\u01b0\u1ee3c tin nh\u1eafn.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"PublishSubscribe-PubSub\"><\/span>Publish\/Subscribe (Pub\/Sub)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Trong m\u00f4 h\u00ecnh <strong>Publish\/Subscribe<\/strong>, m\u1ed9t tin nh\u1eafn s\u1ebd \u0111\u01b0\u1ee3c g\u1eedi t\u1edbi <strong>t\u1ea5t c\u1ea3 c\u00e1c Consumer<\/strong> \u0111\u00e3 \u0111\u0103ng k\u00fd theo d\u00f5i (subscribe) topic \u0111\u00f3.<\/p>\n<ul>\n<li><strong>C\u01a1 ch\u1ebf:<\/strong> Producer g\u1eedi tin nh\u1eafn v\u00e0o m\u1ed9t Topic. B\u1ea3n sao c\u1ee7a tin nh\u1eafn \u0111\u00f3 s\u1ebd \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ebfn t\u1ea5t c\u1ea3 c\u00e1c Queue \u0111ang li\u00ean k\u1ebft v\u1edbi Topic.<\/li>\n<li><strong>\u1ee8ng d\u1ee5ng:<\/strong> Ph\u00f9 h\u1ee3p cho vi\u1ec7c th\u00f4ng b\u00e1o c\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng. V\u00ed d\u1ee5: Khi m\u1ed9t s\u1ea3n ph\u1ea9m m\u1edbi \u0111\u01b0\u1ee3c t\u1ea1o, h\u1ec7 th\u1ed1ng c\u1ea7n:\n<ol>\n<li>C\u1eadp nh\u1eadt v\u00e0o kho t\u00ecm ki\u1ebfm (Elasticsearch).<\/li>\n<li>X\u00f3a cache (Redis).<\/li>\n<li>G\u1eedi th\u00f4ng b\u00e1o cho ng\u01b0\u1eddi d\u00f9ng quan t\u00e2m.<br \/>\nC\u1ea3 3 service n\u00e0y \u0111\u1ec1u c\u1ea7n nh\u1eadn \u0111\u01b0\u1ee3c c\u00f9ng m\u1ed9t th\u00f4ng tin v\u1ec1 s\u1ea3n ph\u1ea9m m\u1edbi.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Top-cac-Message-Broker-pho-bien-tai-Viet-Nam\"><\/span>Top c\u00e1c Message Broker ph\u1ed5 bi\u1ebfn t\u1ea1i Vi\u1ec7t Nam<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Th\u1ecb tr\u01b0\u1eddng Vi\u1ec7t Nam hi\u1ec7n nay \u01b0a chu\u1ed9ng c\u00e1c gi\u1ea3i ph\u00e1p m\u00e3 ngu\u1ed3n m\u1edf. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 ph\u00e2n t\u00edch v\u1ec1 3 c\u00e1i t\u00ean n\u1ed5i b\u1eadt nh\u1ea5t gi\u00fap b\u1ea1n \u0111\u1ecbnh h\u00ecnh n\u00ean h\u1ecdc c\u00f4ng c\u1ee5 n\u00e0o.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"RabbitMQ\"><\/span>RabbitMQ<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>RabbitMQ l\u00e0 c\u00e1i t\u00ean &#8220;l\u00e3o l\u00e0ng&#8221; v\u00e0 ph\u1ed5 bi\u1ebfn nh\u1ea5t khi nh\u1eafc \u0111\u1ebfn c\u00e2u h\u1ecfi <strong>Message Broker l\u00e0 g\u00ec<\/strong>. \u0110\u01b0\u1ee3c vi\u1ebft b\u1eb1ng ng\u00f4n ng\u1eef Erlang, RabbitMQ c\u1ef1c k\u1ef3 m\u1ea1nh m\u1ebd trong vi\u1ec7c \u0111\u1ecbnh tuy\u1ebfn tin nh\u1eafn ph\u1ee9c t\u1ea1p.<\/p>\n<ul>\n<li><strong>\u0110\u1eb7c \u0111i\u1ec3m:<\/strong> H\u1ed7 tr\u1ee3 giao th\u1ee9c AMQP, \u0111\u1ed9 tin c\u1eady cao, \u0111\u1ea3m b\u1ea3o tin nh\u1eafn kh\u00f4ng b\u1ecb m\u1ea5t.<\/li>\n<li><strong>Ph\u00f9 h\u1ee3p:<\/strong> C\u00e1c h\u1ec7 th\u1ed1ng Transactional, Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed, Ng\u00e2n h\u00e0ng, n\u01a1i s\u1ef1 to\u00e0n v\u1eb9n d\u1eef li\u1ec7u l\u00e0 \u01b0u ti\u00ean s\u1ed1 m\u1ed9t.<\/li>\n<\/ul>\n<figure id=\"attachment_36709\" aria-describedby=\"caption-attachment-36709\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-36709\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Top-cac-Message-Broker-pho-bien.jpg\" alt=\"Top c\u00e1c Message Broker ph\u1ed5 bi\u1ebfn\" width=\"800\" height=\"500\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Top-cac-Message-Broker-pho-bien.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Top-cac-Message-Broker-pho-bien-300x188.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Top-cac-Message-Broker-pho-bien-768x480.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-36709\" class=\"wp-caption-text\">Top c\u00e1c Message Broker ph\u1ed5 bi\u1ebfn<\/figcaption><\/figure>\n<h3><span class=\"ez-toc-section\" id=\"Apache-Kafka\"><\/span>Apache Kafka<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ban \u0111\u1ea7u \u0111\u01b0\u1ee3c LinkedIn ph\u00e1t tri\u1ec3n \u0111\u1ec3 x\u1eed l\u00fd log, Apache Kafka nay \u0111\u00e3 tr\u1edf th\u00e0nh ti\u00eau chu\u1ea9n cho b\u00e0i to\u00e1n Big Data.<\/p>\n<ul>\n<li><strong>\u0110\u1eb7c \u0111i\u1ec3m:<\/strong> Kafka kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng gi\u1ed1ng nh\u01b0 m\u1ed9t h\u00e0ng \u0111\u1ee3i truy\u1ec1n th\u1ed1ng m\u00e0 gi\u1ed1ng m\u1ed9t cu\u1ed1n nh\u1eadt k\u00fd (log) kh\u1ed5ng l\u1ed3. N\u00f3 c\u00f3 kh\u1ea3 n\u0103ng x\u1eed l\u00fd h\u00e0ng tri\u1ec7u tin nh\u1eafn m\u1ed7i gi\u00e2y (High Throughput).<\/li>\n<li><strong>Ph\u00f9 h\u1ee3p:<\/strong> Tracking h\u00e0nh vi ng\u01b0\u1eddi d\u00f9ng (User activity tracking), Stream processing, t\u1ed5ng h\u1ee3p Log h\u1ec7 th\u1ed1ng.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Redis-PubSub\"><\/span>Redis Pub\/Sub<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Redis n\u1ed5i ti\u1ebfng l\u00e0 m\u1ed9t In-memory Database, nh\u01b0ng t\u00ednh n\u0103ng Pub\/Sub c\u1ee7a c\u00f4ng c\u1ee5 n\u00e0y c\u0169ng r\u1ea5t \u0111\u01b0\u1ee3c \u01b0a chu\u1ed9ng v\u00ec s\u1ef1 \u0111\u01a1n gi\u1ea3n.<\/p>\n<ul>\n<li><strong>\u0110\u1eb7c \u0111i\u1ec3m:<\/strong> T\u1ed1c \u0111\u1ed9 c\u1ef1c nhanh v\u00ec ch\u1ea1y tr\u00ean RAM. Tuy nhi\u00ean, n\u1ebfu Redis b\u1ecb s\u1eadp, tin nh\u1eafn ch\u01b0a k\u1ecbp x\u1eed l\u00fd s\u1ebd bi\u1ebfn m\u1ea5t (tr\u1eeb khi c\u1ea5u h\u00ecnh Stream m\u1edbi c\u1ee7a Redis).<\/li>\n<li><strong>Ph\u00f9 h\u1ee3p:<\/strong> C\u00e1c t\u00ednh n\u0103ng chat realtime, th\u00f4ng b\u00e1o \u0111\u1ea9y (push notification) kh\u00f4ng y\u00eau c\u1ea7u \u0111\u1ed9 tin c\u1eady tuy\u1ec7t \u0111\u1ed1i.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"ActiveMQ-Amazon-SQS\"><\/span>ActiveMQ \/ Amazon SQS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>ActiveMQ l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn Java c\u1ed5 \u0111i\u1ec3n, t\u01b0\u01a1ng t\u1ef1 RabbitMQ nh\u01b0ng c\u1ea5u h\u00ecnh ph\u1ee9c t\u1ea1p h\u01a1n \u0111\u00f4i ch\u00fat. Amazon SQS l\u00e0 d\u1ecbch v\u1ee5 Cloud c\u1ee7a AWS, d\u00e0nh cho c\u00e1c team mu\u1ed1n &#8220;\u0103n x\u1ed5i&#8221;, kh\u00f4ng mu\u1ed1n t\u1ed1n nh\u00e2n s\u1ef1 v\u1eadn h\u00e0nh server Message Broker ri\u00eang.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"So-sanh-RabbitMQ-va-Kafka-Nen-chon-cai-nao\"><\/span>So s\u00e1nh RabbitMQ v\u00e0 Kafka: N\u00ean ch\u1ecdn c\u00e1i n\u00e0o?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0110\u00e2y l\u00e0 ph\u1ea7n &#8220;Content Gap&#8221; m\u00e0 nhi\u1ec1u l\u1eadp tr\u00ecnh vi\u00ean th\u1eafc m\u1eafc nh\u1ea5t. R\u1ea5t nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng sai c\u00f4ng c\u1ee5 d\u1eabn \u0111\u1ebfn hi\u1ec7u n\u0103ng k\u00e9m. <strong>InterData<\/strong> t\u1ed5ng h\u1ee3p b\u1ea3ng so s\u00e1nh d\u01b0\u1edbi \u0111\u00e2y \u0111\u1ec3 b\u1ea1n c\u00f3 c\u00e1i nh\u00ecn tr\u1ef1c quan.<\/p>\n<table style=\"width: 100%; max-width: 100%; border-collapse: collapse; font-family: Arial, Helvetica, sans-serif; box-shadow: 0 6px 18px rgba(12,64,244,0.12); border-radius: 8px; overflow: hidden;\"><!-- Header row --><\/p>\n<tbody>\n<tr>\n<td style=\"padding: 14px 16px; font-weight: bold; color: #ffffff; background: linear-gradient(90deg, #0c40f4 0%, #077ffa 50%, #0497fc 100%); border-bottom: 1px solid rgba(255, 255, 255, 0.08); text-align: center;\">Ti\u00eau ch\u00ed<\/td>\n<td style=\"padding: 14px 16px; font-weight: bold; color: #ffffff; background: linear-gradient(90deg, #0c40f4 0%, #077ffa 50%, #0497fc 100%); border-bottom: 1px solid rgba(255, 255, 255, 0.08); text-align: center;\">RabbitMQ<\/td>\n<td style=\"padding: 14px 16px; font-weight: bold; color: #ffffff; background: linear-gradient(90deg, #0c40f4 0%, #077ffa 50%, #0497fc 100%); border-bottom: 1px solid rgba(255, 255, 255, 0.08); text-align: center;\">Apache Kafka<\/td>\n<\/tr>\n<p><!-- Row: M\u00f4 h\u00ecnh ch\u00ednh --><\/p>\n<tr style=\"background: #ffffff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; vertical-align: top; border-bottom: 1px solid #eef3ff;\">M\u00f4 h\u00ecnh ch\u00ednh<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Message Queue (H\u00e0ng \u0111\u1ee3i)<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Streaming Platform (D\u00f2ng d\u1eef li\u1ec7u)<\/td>\n<\/tr>\n<p><!-- Row: C\u00e1ch x\u1eed l\u00fd tin --><\/p>\n<tr style=\"background: #f7fbff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; vertical-align: top; border-bottom: 1px solid #eef3ff;\">C\u00e1ch x\u1eed l\u00fd tin<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Tin nh\u1eafn b\u1ecb x\u00f3a sau khi Consumer x\u00e1c nh\u1eadn \u0111\u00e3 x\u1eed l\u00fd (Ack).<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Tin nh\u1eafn \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef l\u1ea1i tr\u00ean \u0111\u0129a c\u1ee9ng trong th\u1eddi gian quy \u0111\u1ecbnh (Retention), c\u00f3 th\u1ec3 \u0111\u1ecdc l\u1ea1i nhi\u1ec1u l\u1ea7n.<\/td>\n<\/tr>\n<p><!-- Row: Hi\u1ec7u n\u0103ng --><\/p>\n<tr style=\"background: #ffffff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Hi\u1ec7u n\u0103ng<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">T\u1ed1t, kho\u1ea3ng 20k &#8211; 50k tin nh\u1eafn\/gi\u00e2y.<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">C\u1ef1c cao, h\u00e0ng tri\u1ec7u tin nh\u1eafn\/gi\u00e2y.<\/td>\n<\/tr>\n<p><!-- Row: \u0110\u1ed9 ph\u1ee9c t\u1ea1p --><\/p>\n<tr style=\"background: #f7fbff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; vertical-align: top; border-bottom: 1px solid #eef3ff;\">\u0110\u1ed9 ph\u1ee9c t\u1ea1p<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Kh\u00e1 d\u1ec5 c\u00e0i \u0111\u1eb7t v\u00e0 qu\u1ea3n l\u00fd.<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Ph\u1ee9c t\u1ea1p, c\u1ea7n Zookeeper (tr\u01b0\u1edbc \u0111\u00e2y) v\u00e0 ki\u1ebfn th\u1ee9c s\u00e2u \u0111\u1ec3 tuning.<\/td>\n<\/tr>\n<p><!-- Row: Routing --><\/p>\n<tr style=\"background: #ffffff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; vertical-align: top; border-bottom: 1px solid #eef3ff;\">Routing<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">R\u1ea5t linh ho\u1ea1t, h\u1ed7 tr\u1ee3 wildcards, routing key.<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top; border-bottom: 1px solid #eef3ff;\">C\u01a1 b\u1ea3n, d\u1ef1a tr\u00ean Topic v\u00e0 Partition.<\/td>\n<\/tr>\n<p><!-- Row: Tr\u01b0\u1eddng h\u1ee3p d\u00f9ng --><\/p>\n<tr style=\"background: #f7fbff;\">\n<td style=\"padding: 12px 16px; font-weight: 600; vertical-align: top;\">Tr\u01b0\u1eddng h\u1ee3p d\u00f9ng<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top;\">C\u1ea7n \u0111\u1ea3m b\u1ea3o th\u1ee9 t\u1ef1, routing ph\u1ee9c t\u1ea1p, t\u00e1c v\u1ee5 n\u1ec1n.<\/td>\n<td style=\"padding: 12px 16px; vertical-align: top;\">X\u1eed l\u00fd Big Data, Log aggregation, Event sourcing.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>N\u1ebfu b\u1ea1n ch\u1ec9 \u0111\u01a1n gi\u1ea3n mu\u1ed1n hi\u1ec3u \u1ee9ng d\u1ee5ng <strong>Message Broker<\/strong>\u00a0v\u00e0 \u00e1p d\u1ee5ng cho m\u1ed9t web app b\u00e1n h\u00e0ng th\u00f4ng th\u01b0\u1eddng, RabbitMQ l\u00e0 s\u1ef1 l\u1ef1a ch\u1ecdn an to\u00e0n. N\u1ebfu b\u1ea1n l\u00e0m vi\u1ec7c v\u1edbi d\u1eef li\u1ec7u l\u1edbn, Kafka l\u00e0 b\u1eaft bu\u1ed9c.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Khi-nao-can-su-dung-Message-Broker\"><\/span>Khi n\u00e0o c\u1ea7n s\u1eed d\u1ee5ng Message Broker?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Kh\u00f4ng ph\u1ea3i d\u1ef1 \u00e1n n\u00e0o c\u0169ng c\u1ea7n c\u00e0i \u0111\u1eb7t th\u00eam m\u1ed9t Message Broker. Vi\u1ec7c l\u1ea1m d\u1ee5ng c\u00f4ng ngh\u1ec7 (Over-engineering) l\u00e0 m\u1ed9t c\u00e1i b\u1eaby. B\u1ea1n ch\u1ec9 n\u00ean c\u00e2n nh\u1eafc s\u1eed d\u1ee5ng gi\u1ea3i ph\u00e1p n\u00e0y trong c\u00e1c tr\u01b0\u1eddng h\u1ee3p c\u1ee5 th\u1ec3 sau:<\/p>\n<ol>\n<li><strong>X\u1eed l\u00fd t\u00e1c v\u1ee5 n\u1eb7ng (Long-running tasks): <\/strong>Khi \u1ee9ng d\u1ee5ng c\u1ea7n x\u1eed l\u00fd file Excel n\u1eb7ng, convert video, ho\u1eb7c t\u1ea1o b\u00e1o c\u00e1o PDF. Thay v\u00ec b\u1eaft ng\u01b0\u1eddi d\u00f9ng ch\u1edd \u0111\u1ee3i, b\u1ea1n \u0111\u1ea9y th\u00f4ng tin v\u00e0o Broker v\u00e0 \u0111\u1ec3 Worker x\u1eed l\u00fd ng\u1ea7m (Background Job).<\/li>\n<li><strong>Giao ti\u1ebfp gi\u1eefa c\u00e1c Microservices (Inter-service communication): <\/strong>Khi b\u1ea1n c\u00f3 h\u00e0ng ch\u1ee5c service kh\u00e1c nhau v\u00e0 mu\u1ed1n ch\u00fang ho\u1ea1t \u0111\u1ed9ng \u0111\u1ed9c l\u1eadp. S\u1eed d\u1ee5ng Broker gi\u00fap c\u00e1c team ph\u00e1t tri\u1ec3n (Dev team) l\u00e0m vi\u1ec7c song song m\u00e0 kh\u00f4ng c\u1ea7n ch\u1edd \u0111\u1ee3i API c\u1ee7a nhau ho\u00e0n thi\u1ec7n.<\/li>\n<li><strong>H\u1ec7 th\u1ed1ng ph\u00e2n t\u00e1n c\u1ea7n \u0111\u1ed9 tin c\u1eady cao: <\/strong>C\u00e1c giao d\u1ecbch ng\u00e2n h\u00e0ng ho\u1eb7c v\u00ed \u0111i\u1ec7n t\u1eed th\u01b0\u1eddng d\u00f9ng Broker \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o kh\u00f4ng m\u1ed9t giao d\u1ecbch n\u00e0o b\u1ecb th\u1ea5t tho\u00e1t, k\u1ec3 c\u1ea3 khi m\u1ea1ng ch\u1eadp ch\u1eddn.<\/li>\n<li><strong>\u0110i\u1ec1u ti\u1ebft l\u01b0u l\u01b0\u1ee3ng (Traffic Spikes): <\/strong>\u1ee8ng d\u1ee5ng c\u1ee7a b\u1ea1n th\u01b0\u1eddng xuy\u00ean b\u1ecb qu\u00e1 t\u1ea3i v\u00e0o gi\u1edd cao \u0111i\u1ec3m? Message Broker s\u1ebd \u0111\u00f3ng vai tr\u00f2 l\u00e0 van \u0111i\u1ec1u \u00e1p, gi\u00fap h\u1ec7 th\u1ed1ng &#8220;s\u1ed1ng s\u00f3t&#8221; qua c\u01a1n b\u00e3o traffic.<\/li>\n<li><strong>Event Streaming &amp; Log: <\/strong>Thu th\u1eadp log l\u1ed7i t\u1eeb 50 server kh\u00e1c nhau v\u1ec1 m\u1ed9t n\u01a1i duy nh\u1ea5t \u0111\u1ec3 ph\u00e2n t\u00edch. Kafka l\u00e0 \u1ee9ng c\u1eed vi\u00ean s\u1ed1 m\u1ed9t cho t\u00ecnh hu\u1ed1ng n\u00e0y.<\/li>\n<\/ol>\n<figure id=\"attachment_36710\" aria-describedby=\"caption-attachment-36710\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-36710\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-can-su-dung-Message-Broker.jpg\" alt=\"Khi n\u00e0o c\u1ea7n s\u1eed d\u1ee5ng Message Broker\" width=\"800\" height=\"500\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-can-su-dung-Message-Broker.jpg 800w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-can-su-dung-Message-Broker-300x188.jpg 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2025\/12\/Khi-nao-can-su-dung-Message-Broker-768x480.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-36710\" class=\"wp-caption-text\">Khi n\u00e0o c\u1ea7n s\u1eed d\u1ee5ng Message Broker?<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Nhung-thach-thuc-khi-su-dung-Message-Broker\"><\/span>Nh\u1eefng th\u00e1ch th\u1ee9c khi s\u1eed d\u1ee5ng Message Broker<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>B\u00ean c\u1ea1nh v\u00f4 v\u00e0n l\u1ee3i \u00edch, vi\u1ec7c tri\u1ec3n khai Message Broker c\u0169ng \u0111i k\u00e8m nh\u1eefng &#8220;n\u1ed7i \u0111au&#8221; m\u00e0 b\u1ea1n c\u1ea7n l\u01b0\u1eddng tr\u01b0\u1edbc:<\/p>\n<ul>\n<li><strong>T\u0103ng \u0111\u1ed9 ph\u1ee9c t\u1ea1p c\u1ee7a h\u1ec7 th\u1ed1ng:<\/strong> B\u1ea1n ph\u1ea3i qu\u1ea3n l\u00fd th\u00eam m\u1ed9t c\u1ee5m server n\u1eefa. N\u1ebfu Broker ch\u1ebft, to\u00e0n b\u1ed9 h\u1ec7 th\u1ed1ng giao ti\u1ebfp s\u1ebd t\u00ea li\u1ec7t. \u0110i\u1ec1u n\u00e0y \u0111\u00f2i h\u1ecfi ki\u1ebfn th\u1ee9c v\u1eadn h\u00e0nh (DevOps) v\u1eefng ch\u1eafc \u0111\u1ec3 thi\u1ebft l\u1eadp Cluster v\u00e0 High Availability.<\/li>\n<li><strong>V\u1ea5n \u0111\u1ec1 Debugging v\u00e0 Trace log:<\/strong> Khi m\u1ed9t tin nh\u1eafn \u0111i qua Broker, vi\u1ec7c theo d\u00f5i lu\u1ed3ng \u0111i c\u1ee7a d\u1eef li\u1ec7u (Data flow) tr\u1edf n\u00ean kh\u00f3 kh\u0103n h\u01a1n nhi\u1ec1u so v\u1edbi g\u1ecdi API tr\u1ef1c ti\u1ebfp. B\u1ea1n s\u1ebd kh\u00f3 bi\u1ebft \u0111\u01b0\u1ee3c tin nh\u1eafn b\u1ecb k\u1eb9t \u1edf \u0111\u00e2u n\u1ebfu kh\u00f4ng c\u00f3 h\u1ec7 th\u1ed1ng Monitoring t\u1ed1t.<\/li>\n<li><strong>T\u00ednh nh\u1ea5t qu\u00e1n c\u1ee7a d\u1eef li\u1ec7u (Eventual Consistency):<\/strong> Do x\u1eed l\u00fd b\u1ea5t \u0111\u1ed3ng b\u1ed9, d\u1eef li\u1ec7u c\u00f3 th\u1ec3 kh\u00f4ng \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt t\u1ee9c th\u00ec tr\u00ean to\u00e0n h\u1ec7 th\u1ed1ng. B\u1ea1n c\u1ea7n thi\u1ebft k\u1ebf UI\/UX sao cho ng\u01b0\u1eddi d\u00f9ng hi\u1ec3u \u0111\u01b0\u1ee3c \u0111i\u1ec1u n\u00e0y (v\u00ed d\u1ee5: hi\u1ec3n th\u1ecb tr\u1ea1ng th\u00e1i &#8220;\u0110ang x\u1eed l\u00fd&#8221;).<\/li>\n<li><strong>Learning Curve:<\/strong> \u0110\u1ed9i ng\u0169 ph\u00e1t tri\u1ec3n c\u1ea7n th\u1eddi gian \u0111\u1ec3 h\u1ecdc c\u00e1ch s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n, c\u00e1ch x\u1eed l\u00fd l\u1ed7i (Retry mechanism) v\u00e0 Dead Letter Queue (n\u01a1i ch\u1ee9a c\u00e1c tin nh\u1eafn l\u1ed7i kh\u00f4ng th\u1ec3 x\u1eed l\u00fd).<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Ket-luan\"><\/span>K\u1ebft lu\u1eadn<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Qua b\u00e0i vi\u1ebft n\u00e0y, hy v\u1ecdng b\u1ea1n \u0111\u00e3 n\u1eafm r\u00f5 <strong>Message Broker l\u00e0 g\u00ec<\/strong> c\u0169ng nh\u01b0 vai tr\u00f2 kh\u00f4ng th\u1ec3 thay th\u1ebf c\u1ee7a c\u00f4ng c\u1ee5 n\u00e0y trong c\u00e1c h\u1ec7 th\u1ed1ng ph\u1ea7n m\u1ec1m hi\u1ec7n \u0111\u1ea1i. T\u1eeb vi\u1ec7c \u0111\u00f3ng vai tr\u00f2 l\u00e0 &#8220;ng\u01b0\u1eddi v\u1eadn chuy\u1ec3n&#8221; tin c\u1eady, Message Broker gi\u00fap h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n linh ho\u1ea1t h\u01a1n, ch\u1ecbu t\u1ea3i t\u1ed1t h\u01a1n v\u00e0 mang l\u1ea1i tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng m\u01b0\u1ee3t m\u00e0 h\u01a1n.<\/p>\n<p>D\u00f9 b\u1ea1n ch\u1ecdn RabbitMQ, Kafka hay b\u1ea5t k\u1ef3 gi\u1ea3i ph\u00e1p n\u00e0o, h\u00e3y lu\u00f4n nh\u1edb r\u1eb1ng c\u00f4ng c\u1ee5 sinh ra l\u00e0 \u0111\u1ec3 ph\u1ee5c v\u1ee5 b\u00e0i to\u00e1n kinh doanh. H\u00e3y ph\u00e2n t\u00edch k\u1ef9 nhu c\u1ea7u c\u1ee7a d\u1ef1 \u00e1n tr\u01b0\u1edbc khi \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh.<\/p>\n<blockquote><p>X\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng Message Broker hay ki\u1ebfn tr\u00fac Microservices ph\u1ee9c t\u1ea1p \u0111\u00f2i h\u1ecfi m\u1ed9t n\u1ec1n t\u1ea3ng h\u1ea1 t\u1ea7ng v\u1eefng ch\u1eafc. \u0110\u1eebng \u0111\u1ec3 n\u1ed7i lo v\u1ec1 t\u00e0i nguy\u00ean m\u00e1y ch\u1ee7 k\u00ecm h\u00e3m d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n. InterData cung c\u1ea5p gi\u1ea3i ph\u00e1p <strong><a href=\"https:\/\/interdata.vn\/cloud-server\/\">thu\u00ea Cloud Server<\/a><\/strong> v\u00e0 <strong><a href=\"https:\/\/interdata.vn\/thue-vps\/\">thu\u00ea VPS t\u1ed1c \u0111\u1ed9 cao<\/a><\/strong>, s\u1eed d\u1ee5ng 100% \u1ed5 c\u1ee9ng NVMe U.2 t\u1ed1c \u0111\u1ed9 cao, c\u00f9ng cam k\u1ebft Uptime 99.9%, \u0111\u1ea3m b\u1ea3o h\u1ec7 th\u1ed1ng lu\u00f4n v\u1eadn h\u00e0nh m\u01b0\u1ee3t m\u00e0 ngay c\u1ea3 trong nh\u1eefng \u0111\u1ee3t cao \u0111i\u1ec3m. Li\u00ean h\u1ec7 ngay v\u1edbi <strong><a href=\"https:\/\/interdata.vn\/\">InterData<\/a> <\/strong>\u0111\u1ec3 \u0111\u01b0\u1ee3c t\u01b0 v\u1ea5n c\u1ea5u h\u00ecnh t\u1ed1i \u01b0u nh\u1ea5t cho h\u1ec7 th\u1ed1ng c\u1ee7a b\u1ea1n!<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Trong c\u00e1c h\u1ec7 th\u1ed1ng hi\u1ec7n \u0111\u1ea1i, \u0111\u1eb7c bi\u1ec7t l\u00e0 microservices, l\u01b0\u1ee3ng d\u1eef li\u1ec7u v\u00e0 s\u1ed1 l\u01b0\u1ee3ng t\u00e1c v\u1ee5 c\u1ea7n x\u1eed l\u00fd song song ng\u00e0y c\u00e0ng l\u1edbn. \u0110\u1ec3 \u0111\u1ea3m b\u1ea3o c\u00e1c d\u1ecbch v\u1ee5 giao ti\u1ebfp v\u1edbi nhau \u1ed5n \u0111\u1ecbnh, kh\u00f4ng b\u1ecb ngh\u1ebdn v\u00e0 v\u1eabn duy tr\u00ec hi\u1ec7u su\u1ea5t cao, c\u00e1c doanh nghi\u1ec7p th\u01b0\u1eddng s\u1eed d\u1ee5ng Message<\/p>\n","protected":false},"author":11,"featured_media":36711,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[84],"tags":[],"class_list":["post-36705","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cong-cu-phan-mem"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/36705","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=36705"}],"version-history":[{"count":2,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/36705\/revisions"}],"predecessor-version":[{"id":36713,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/36705\/revisions\/36713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/36711"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=36705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=36705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=36705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}