{"id":25081,"date":"2026-04-24T06:49:02","date_gmt":"2026-04-23T23:49:02","guid":{"rendered":"https:\/\/huongdanjava.com\/?p=25081"},"modified":"2026-05-14T12:53:57","modified_gmt":"2026-05-14T05:53:57","slug":"gioi-thieu-ve-spring-cloud-stream","status":"publish","type":"post","link":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html","title":{"rendered":"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream"},"content":{"rendered":"<p><a href=\"https:\/\/spring.io\/projects\/spring-cloud-stream\" target=\"_blank\" rel=\"noopener\">Spring Cloud Stream<\/a> l\u00e0 m\u1ed9t module c\u1ee7a Spring Framework, l\u00e0 m\u1ed9t high-level abstraction \u0111\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng event-driven microservices. N\u00f3i n\u00f4m na v\u1ec1 event-driven microservices th\u00ec \u0111\u00f3 l\u00e0 c\u00e1ch ch\u00fang ta thi\u1ebft k\u1ebf m\u1ed9t h\u1ec7 th\u1ed1ng microservice m\u00e0 \u1edf \u0111\u00f3, c\u00e1c services s\u1ebd communicate b\u1eb1ng c\u00e1ch publish v\u00e0 consume c\u00e1c event thay v\u00ec communicate tr\u1ef1c ti\u1ebfp v\u1edbi nhau \u0111\u00f3 c\u00e1c b\u1ea1n!<\/p>\n<p>Spring Cloud Stream h\u1ed7 tr\u1ee3 nhi\u1ec1u message broker kh\u00e1c nhau nh\u01b0 Apache Kafka, RabbitMQ, &#8230; b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng c\u00e1c binder. C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng thay \u0111\u1ed5i message broker vendor m\u00e0 kh\u00f4ng c\u1ea7n ph\u1ea3i thay \u0111\u1ed5i code nhi\u1ec1u. Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh s\u1ebd h\u01b0\u1edbng d\u1eabn c\u00e1c b\u1ea1n c\u00e1ch s\u1eed d\u1ee5ng Spring Cloud Stream c\u01a1 b\u1ea3n v\u1edbi m\u1ed9t v\u00ed d\u1ee5 s\u1eed d\u1ee5ng RabbitMQ, c\u00e1c b\u1ea1n nh\u00e9!<\/p>\n<p>\u0110\u1ea7u ti\u00ean, m\u00ecnh s\u1ebd t\u1ea1o m\u1edbi m\u1ed9t Spring Boot project v\u1edbi Cloud Stream dependency \u0111\u1ec3 l\u00e0m v\u00ed d\u1ee5:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-25083 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/gioi-thieu-ve-spring-cloud-stream-1.png\" alt=\"\" width=\"700\" height=\"894\" \/><\/p>\n<p>\u0110\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ s\u1eed d\u1ee5ng Spring Cloud Stream, c\u00e1c b\u1ea1n c\u1ea7n khai b\u00e1o th\u00eam Spring Cloud Stream Rabbit Starter dependency nh\u01b0 sau:<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;dependency&gt;\r\n  &lt;groupId&gt;org.springframework.cloud&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;spring-cloud-starter-stream-rabbit&lt;\/artifactId&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<p>\u0110\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ, c\u00e1c b\u1ea1n h\u00e3y start m\u1ed9t RabbitMQ server l\u00ean, sau \u0111\u00f3 th\u00ec c\u1ea5u h\u00ecnh th\u00f4ng tin RabbitMQ server n\u00e0y v\u1edbi \u1ee9ng d\u1ee5ng Spring Boot c\u1ee7a ch\u00fang ta s\u1eed d\u1ee5ng c\u00e1c property nh\u01b0 sau:<\/p>\n<pre class=\"lang:yaml decode:true \">spring:\r\n  rabbitmq:\r\n    host: localhost\r\n    port: 5672\r\n    username: guest\r\n    password: guest<\/pre>\n<p>N\u1ebfu \u0111ang trong qu\u00e1 tr\u00ecnh development, c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 ch\u1ea1y RabbitMQ s\u1eed d\u1ee5ng Docker Compose, nh\u01b0 m\u00ecnh \u0111ang l\u00e0m. C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o th\u00eam h\u01b0\u1edbng d\u1eabn<a href=\"https:\/\/huongdanjava.com\/vi\/cai-dat-rabbitmq-su-dung-docker-compose.html\" target=\"_blank\" rel=\"noopener\"> \u1edf \u0111\u00e2y<\/a>.<\/p>\n<p><strong>\u0110\u1ec3 g\u1eedi message t\u1edbi m\u1ed9t queue trong RabbitMQ s\u1eed d\u1ee5ng Spring Cloud Stream v\u1edbi binding<\/strong>, \u0111\u1ea7u ti\u00ean, c\u00e1c b\u1ea1n c\u00f3 th\u1ec3 \u0111\u1ecbnh ngh\u0129a bean trong Spring container cho consumer v\u00e0 producer s\u1eed d\u1ee5ng c\u00e1c interface Consumer v\u00e0 Supplier c\u1ee7a Java, v\u00ed d\u1ee5 nh\u01b0 sau:<\/p>\n<pre class=\"lang:java decode:true \">@Bean\r\npublic Supplier&lt;String&gt; sendSupplier() {\r\n  return () -&gt; \"Hello World\";\r\n}\r\n\r\n@Bean\r\npublic Consumer&lt;String&gt; receiveConsumer() {\r\n  return message -&gt; {\r\n    System.out.println(\"Received: \" + message);\r\n  };\r\n}<\/pre>\n<p>Cho producer, ch\u00fang ta s\u1eed d\u1ee5ng interface Supplier \u0111\u1ec3 \u0111\u1ecbnh ngh\u0129a message m\u00e0 ch\u00fang ta mu\u1ed1n g\u1eedi t\u1edbi RabbitMQ, c\u00f2n interface Consumer s\u1ebd l\u00e0m nhi\u1ec7m v\u1ee5 nh\u1eadn message n\u00e0y \u0111\u00f3 c\u00e1c b\u1ea1n!<\/p>\n<p><strong>Sau \u0111\u00f3 th\u00ec c\u00e1c b\u1ea1n h\u00e3y khai b\u00e1o s\u1eed d\u1ee5ng nh\u1eefng property<\/strong> sau:<\/p>\n<pre class=\"lang:yaml decode:true \">spring:\r\n  cloud:\r\n    function:\r\n      definition: sendSupplier;receiveConsumer\r\n    stream:\r\n      bindings:\r\n        sendSupplier-out-0:\r\n          destination: message.exchange\r\n        receiveConsumer-in-0:\r\n          destination: message.exchange\r\n          group: huongdanjava\r\n<\/pre>\n<p>\u0111\u1ec3 Spring t\u1ef1 \u0111\u1ed9ng generate logical binding name (n\u00f3i n\u00f4m na th\u00ec \u0111\u00e2y l\u00e0 nh\u1eefng binding name ch\u1ec9 t\u1ed3n t\u1ea1i trong Spring, ch\u01b0a t\u1ed3n t\u1ea1i trong RabbitMQ hay Apache Kafka nha c\u00e1c b\u1ea1n) v\u00e0 t\u1ef1 \u0111\u1ed9ng binding c\u00e1c logical binding name n\u00e0y v\u1edbi exchange v\u00e0 queue trong RabbitMQ c\u00e1c b\u1ea1n nh\u00e9!<\/p>\n<p>Spring Cloud Stream s\u1eed d\u1ee5ng <a href=\"https:\/\/spring.io\/projects\/spring-cloud-function\" target=\"_blank\" rel=\"noopener\">Spring Cloud Function<\/a>, n\u00ean v\u1edbi khai b\u00e1o bean cho c\u00e1c interface Supplier v\u00e0 Consumer \u1edf tr\u00ean v\u00e0 property:<\/p>\n<pre class=\"lang:yaml decode:true \">spring:\r\n  cloud:\r\n    function:\r\n      definition: sendSupplier;receiveConsumer\r\n<\/pre>\n<p>th\u00ec khi c\u00e1c b\u1ea1n ch\u1ea1y \u1ee9ng d\u1ee5ng, Spring s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea1o c\u00e1c logical binding name l\u00e0:<\/p>\n<ul>\n<li>sendSupplier-out-0<\/li>\n<li>receiveConsumer-in-0<\/li>\n<\/ul>\n<p>C\u00e1c property:<\/p>\n<pre class=\"lang:yaml decode:true \">spring:\r\n  cloud:\r\n    stream:\r\n      bindings:\r\n        sendSupplier-out-0:\r\n          destination: message.exchange\r\n        receiveConsumer-in-0:\r\n          destination: message.exchange\r\n          group: huongdanjava\r\n<\/pre>\n<p>s\u1ebd t\u1ef1 \u0111\u1ed9ng bind nh\u1eefng logical binding name tr\u00ean v\u1edbi exchange v\u00e0 queue trong RabbitMQ. T\u00ean c\u1ee7a c\u00e1c property l\u1ea7n l\u01b0\u1ee3t s\u1ebd l\u00e0 <em>spring.cloud.stream.bindings.&lt;logical-binding-name&gt;.destination<\/em> v\u00e0 <em>spring.cloud.stream.bindings.&lt;logical-binding-name&gt;.group.<\/em><\/p>\n<p>Sau khi binding xong, Spring Cloud Stream c\u0169ng s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea1o c\u00e1c exchange hay queue n\u00e0y, n\u1ebfu ch\u00fang ch\u01b0a t\u1ed3n t\u1ea1i trong RabbitMQ nha c\u00e1c b\u1ea1n! Cho v\u00ed d\u1ee5 c\u1ee7a m\u00ecnh th\u00ec khi ch\u1ea1y, c\u00e1c b\u1ea1n s\u1ebd th\u1ea5y c\u00e1c exchange sendSupplier-out-0, receiveConsumer-in-0 \u0111\u01b0\u1ee3c t\u1ea1o trong RabbitMQ nh\u01b0 sau:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-25088 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/gioi-thieu-ve-spring-cloud-stream-2.png\" alt=\"\" width=\"700\" height=\"585\" \/><\/p>\n<p>M\u1ed9t queue m\u1edbi v\u1edbi t\u00ean \u0111\u01b0\u1ee3c combine t\u1eeb c\u00e1c properties <em>destination<\/em> v\u00e0 <em>group<\/em> c\u0169ng s\u1ebd \u0111\u01b0\u1ee3c t\u1ea1o trong RabbitMQ nh\u01b0 sau:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-25090 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/gioi-thieu-ve-spring-cloud-stream-3.png\" alt=\"\" width=\"700\" height=\"401\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>B\u00e2y gi\u1edd khi ch\u1ea1y \u1ee9ng d\u1ee5ng v\u00ed d\u1ee5 c\u1ee7a m\u00ecnh, c\u00e1c b\u1ea1n s\u1ebd th\u1ea5y li\u00ean t\u1ee5c, m\u1ed9t message \u0111\u01b0\u1ee3c public v\u00e0o RabbitMQ v\u00e0 \u1ee9ng d\u1ee5ng c\u1ee7a m\u00ecnh s\u1ebd nh\u1eadn message \u0111\u00f3 v\u00e0 in ra d\u00f2ng ch\u1eef nh\u01b0 sau:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-25092 aligncenter\" src=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/gioi-thieu-ve-spring-cloud-stream-4.png\" alt=\"\" width=\"700\" height=\"361\" \/><\/p>\n<p>Vi\u1ec7c li\u00ean t\u1ee5c public message v\u00e0o RabbitMQ ch\u1ec9 happen khi ch\u00fang ta s\u1eed d\u1ee5ng interface Supplier th\u00f4i nh\u00e9 c\u00e1c b\u1ea1n! Khi ch\u00fang ta s\u1eed d\u1ee5ng Supplier, th\u00ec Spring Cloud Stream m\u1eb7c \u0111\u1ecbnh s\u1ebd g\u1ecdi t\u1edbi Supplier m\u1ed7i 1s \u0111\u1ec3 public message. C\u00e1c b\u1ea1n c\u00f3 th\u1ec3 thay \u0111\u1ed5i c\u1ea5u h\u00ecnh m\u1eb7c \u0111\u1ecbnh n\u00e0y s\u1eed d\u1ee5ng c\u00e1c properties sau:<\/p>\n<pre class=\"lang:java decode:true \">spring:\r\n  cloud:\r\n    stream:\r\n      poller:\r\n        fixed-delay: 2000\r\n        max-messages-per-poll: 1<\/pre>\n<p>Nh\u01b0 v\u1eady l\u00e0, ch\u1ec9 v\u1edbi v\u00e0i d\u00f2ng code \u0111\u01a1n gi\u1ea3n, ch\u00fang ta \u0111\u00e3 c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng publish v\u00e0 nh\u1eadn message t\u1eeb RabbitMQ s\u1eed d\u1ee5ng Spring Cloud Stream \u0111\u00f3 c\u00e1c b\u1ea1n.<\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-right kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;right&quot;,&quot;id&quot;:&quot;25081&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;4&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 4px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Spring Cloud Stream l\u00e0 m\u1ed9t module c\u1ee7a Spring Framework, l\u00e0 m\u1ed9t high-level abstraction \u0111\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng event-driven microservices. N\u00f3i n\u00f4m na v\u1ec1 event-driven microservices th\u00ec \u0111\u00f3 l\u00e0 c\u00e1ch ch\u00fang ta thi\u1ebft k\u1ebf m\u1ed9t h\u1ec7 th\u1ed1ng microservice m\u00e0 \u1edf \u0111\u00f3, c\u00e1c services s\u1ebd&hellip; <a href=\"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":25085,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2550],"tags":[],"class_list":["post-25081","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring-cloud-stream","clearfix"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream - Huong Dan Java<\/title>\n<meta name=\"description\" content=\"Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh gi\u1edbi thi\u1ec7u v\u1edbi c\u00e1c b\u1ea1n v\u1ec1 Spring Cloud Stream v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream - Huong Dan Java\" \/>\n<meta property=\"og:description\" content=\"Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh gi\u1edbi thi\u1ec7u v\u1edbi c\u00e1c b\u1ea1n v\u1ec1 Spring Cloud Stream v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html\" \/>\n<meta property=\"og:site_name\" content=\"Huong Dan Java\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/nhkhanh2406\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-23T23:49:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-14T05:53:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/spring-cloud.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Khanh Nguyen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/KhanhNguyenJ\" \/>\n<meta name=\"twitter:site\" content=\"@KhanhNguyenJ\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Khanh Nguyen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html\"},\"author\":{\"name\":\"Khanh Nguyen\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"headline\":\"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream\",\"datePublished\":\"2026-04-23T23:49:02+00:00\",\"dateModified\":\"2026-05-14T05:53:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html\"},\"wordCount\":894,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/spring-cloud.jpg\",\"articleSection\":[\"Spring Cloud Stream\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html\",\"name\":\"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream - Huong Dan Java\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/spring-cloud.jpg\",\"datePublished\":\"2026-04-23T23:49:02+00:00\",\"dateModified\":\"2026-05-14T05:53:57+00:00\",\"description\":\"Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh gi\u1edbi thi\u1ec7u v\u1edbi c\u00e1c b\u1ea1n v\u1ec1 Spring Cloud Stream v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/spring-cloud.jpg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/spring-cloud.jpg\",\"width\":400,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/vi\\\/gioi-thieu-ve-spring-cloud-stream.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/huongdanjava.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#website\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/\",\"name\":\"Huong Dan Java\",\"description\":\"Java development tutorials\",\"publisher\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/huongdanjava.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/#\\\/schema\\\/person\\\/dc859d7f8cbea3b593e6738de9cbb82d\",\"name\":\"Khanh Nguyen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"url\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"contentUrl\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\",\"width\":1267,\"height\":1517,\"caption\":\"Khanh Nguyen\"},\"logo\":{\"@id\":\"https:\\\/\\\/huongdanjava.com\\\/wp-content\\\/uploads\\\/2021\\\/07\\\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg\"},\"description\":\"I love Java and everything related to Java.\",\"sameAs\":[\"https:\\\/\\\/huongdanjava.com\",\"https:\\\/\\\/www.facebook.com\\\/nhkhanh2406\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/KhanhNguyenJ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream - Huong Dan Java","description":"Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh gi\u1edbi thi\u1ec7u v\u1edbi c\u00e1c b\u1ea1n v\u1ec1 Spring Cloud Stream v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html","og_locale":"en_US","og_type":"article","og_title":"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream - Huong Dan Java","og_description":"Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh gi\u1edbi thi\u1ec7u v\u1edbi c\u00e1c b\u1ea1n v\u1ec1 Spring Cloud Stream v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ.","og_url":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html","og_site_name":"Huong Dan Java","article_publisher":"https:\/\/www.facebook.com\/nhkhanh2406","article_author":"https:\/\/www.facebook.com\/nhkhanh2406","article_published_time":"2026-04-23T23:49:02+00:00","article_modified_time":"2026-05-14T05:53:57+00:00","og_image":[{"width":400,"height":400,"url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/spring-cloud.jpg","type":"image\/jpeg"}],"author":"Khanh Nguyen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/KhanhNguyenJ","twitter_site":"@KhanhNguyenJ","twitter_misc":{"Written by":"Khanh Nguyen","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#article","isPartOf":{"@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html"},"author":{"name":"Khanh Nguyen","@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"headline":"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream","datePublished":"2026-04-23T23:49:02+00:00","dateModified":"2026-05-14T05:53:57+00:00","mainEntityOfPage":{"@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html"},"wordCount":894,"commentCount":0,"publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"image":{"@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/spring-cloud.jpg","articleSection":["Spring Cloud Stream"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html","url":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html","name":"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream - Huong Dan Java","isPartOf":{"@id":"https:\/\/huongdanjava.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage"},"image":{"@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage"},"thumbnailUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/spring-cloud.jpg","datePublished":"2026-04-23T23:49:02+00:00","dateModified":"2026-05-14T05:53:57+00:00","description":"Trong b\u00e0i vi\u1ebft n\u00e0y, m\u00ecnh gi\u1edbi thi\u1ec7u v\u1edbi c\u00e1c b\u1ea1n v\u1ec1 Spring Cloud Stream v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 l\u00e0m vi\u1ec7c v\u1edbi RabbitMQ.","breadcrumb":{"@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#primaryimage","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/spring-cloud.jpg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2026\/04\/spring-cloud.jpg","width":400,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/huongdanjava.com\/vi\/gioi-thieu-ve-spring-cloud-stream.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/huongdanjava.com\/"},{"@type":"ListItem","position":2,"name":"Gi\u1edbi thi\u1ec7u v\u1ec1 Spring Cloud Stream"}]},{"@type":"WebSite","@id":"https:\/\/huongdanjava.com\/#website","url":"https:\/\/huongdanjava.com\/","name":"Huong Dan Java","description":"Java development tutorials","publisher":{"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/huongdanjava.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/huongdanjava.com\/#\/schema\/person\/dc859d7f8cbea3b593e6738de9cbb82d","name":"Khanh Nguyen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","url":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","contentUrl":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg","width":1267,"height":1517,"caption":"Khanh Nguyen"},"logo":{"@id":"https:\/\/huongdanjava.com\/wp-content\/uploads\/2021\/07\/CC6FAC58-D227-4DD8-93D1-6D6A795577E3_1_201_a.jpeg"},"description":"I love Java and everything related to Java.","sameAs":["https:\/\/huongdanjava.com","https:\/\/www.facebook.com\/nhkhanh2406","https:\/\/x.com\/https:\/\/twitter.com\/KhanhNguyenJ"]}]}},"_links":{"self":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/25081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/comments?post=25081"}],"version-history":[{"count":12,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/25081\/revisions"}],"predecessor-version":[{"id":25136,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/posts\/25081\/revisions\/25136"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media\/25085"}],"wp:attachment":[{"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/media?parent=25081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/categories?post=25081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huongdanjava.com\/wp-json\/wp\/v2\/tags?post=25081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}