{"id":7648,"date":"2023-11-28T19:50:12","date_gmt":"2023-11-28T11:50:12","guid":{"rendered":"https:\/\/wx.kaifamiao.info\/?p=7648"},"modified":"2023-12-05T15:44:29","modified_gmt":"2023-12-05T07:44:29","slug":"springboot-ji-chengrabbitmq-ju-ti-bu-zhou-ni-zhi-d","status":"publish","type":"post","link":"http:\/\/wx.kaifamiao.info\/index.php\/2023\/11\/28\/springboot-ji-chengrabbitmq-ju-ti-bu-zhou-ni-zhi-d\/","title":{"rendered":"SpringBoot\u96c6\u6210RabbitMQ\u5177\u4f53\u6b65\u9aa4\u4f60\u77e5\u9053\u5417\uff1f"},"content":{"rendered":"<p>\u662f\u7684\uff0c\u96c6\u6210 RabbitMQ \u5230 Spring Boot \u9879\u76ee\u4e2d\u6d89\u53ca\u4ee5\u4e0b\u4e3b\u8981\u6b65\u9aa4\uff1a<\/p>\n<ol>\n<li>\n<strong>\u5f15\u5165\u4f9d\u8d56\uff1a<\/strong> \u5728\u9879\u76ee\u7684 <code>pom.xml<\/code> \u6587\u4ef6\uff08\u5982\u679c\u662f Maven \u9879\u76ee\uff09\u6216 <code>build.gradle<\/code> \u6587\u4ef6\uff08\u5982\u679c\u662f Gradle \u9879\u76ee\uff09\u4e2d\u5f15\u5165 RabbitMQ \u76f8\u5173\u7684\u4f9d\u8d56\u3002<\/p>\n<p>Maven \u9879\u76ee\u7684\u4f8b\u5b50\uff1a<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-amqp&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p>Gradle \u9879\u76ee\u7684\u4f8b\u5b50\uff1a<\/p>\n<pre><code class=\"language-groovy\">implementation 'org.springframework.boot:spring-boot-starter-amqp'\n<\/code><\/pre>\n<\/li>\n<li>\n<strong>\u914d\u7f6e RabbitMQ \u8fde\u63a5\u4fe1\u606f\uff1a<\/strong> \u5728 <code>application.properties<\/code> \u6216 <code>application.yml<\/code> \u6587\u4ef6\u4e2d\u914d\u7f6e RabbitMQ \u7684\u8fde\u63a5\u4fe1\u606f\uff0c\u5982\u4e3b\u673a\u5730\u5740\u3001\u7aef\u53e3\u3001\u7528\u6237\u540d\u548c\u5bc6\u7801\u3002<\/p>\n<pre><code class=\"language-yaml\">spring:\n  rabbitmq:\n    host: localhost\n    port: 5672\n    username: guest\n    password: guest\n<\/code><\/pre>\n<\/li>\n<li>\n<strong>\u521b\u5efa\u6d88\u606f\u751f\u4ea7\u8005\u548c\u6d88\u8d39\u8005\uff1a<\/strong> \u521b\u5efa\u6d88\u606f\u751f\u4ea7\u8005\uff08\u53d1\u9001\u6d88\u606f\u5230 RabbitMQ\uff09\u548c\u6d88\u606f\u6d88\u8d39\u8005\uff08\u4ece RabbitMQ \u63a5\u6536\u6d88\u606f\uff09\u3002<\/p>\n<pre><code class=\"language-java\">import org.springframework.amqp.rabbit.core.RabbitTemplate;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Component;\n\n@Component\npublic class MessageProducer {\n\n    private final RabbitTemplate rabbitTemplate;\n\n    @Autowired\n    public MessageProducer(RabbitTemplate rabbitTemplate) {\n        this.rabbitTemplate = rabbitTemplate;\n    }\n\n    public void sendMessage(String message) {\n        rabbitTemplate.convertAndSend(&quot;exchange&quot;, &quot;routingKey&quot;, message);\n    }\n}\n<\/code><\/pre>\n<pre><code class=\"language-java\">import org.springframework.amqp.rabbit.annotation.RabbitListener;\nimport org.springframework.stereotype.Component;\n\n@Component\npublic class MessageConsumer {\n\n    @RabbitListener(queues = &quot;queue&quot;)\n    public void receiveMessage(String message) {\n        System.out.println(&quot;Received message: &quot; + message);\n    }\n}\n<\/code><\/pre>\n<\/li>\n<li>\n<strong>\u914d\u7f6e RabbitMQ Exchange \u548c Queue\uff1a<\/strong> \u5728\u914d\u7f6e\u7c7b\u4e2d\u914d\u7f6e RabbitMQ \u7684 Exchange \u548c Queue\u3002Spring Boot \u63d0\u4f9b\u4e86 <code>RabbitTemplate<\/code> \u548c <code>RabbitListener<\/code> \u6ce8\u89e3\uff0c\u5b83\u4eec\u4f7f\u7528\u9ed8\u8ba4\u7684 Exchange\uff08\u7a7a\u5b57\u7b26\u4e32\uff09\u548c\u9ed8\u8ba4\u7684 Queue\uff08\u65b9\u6cd5\u540d\uff09\u3002<\/p>\n<pre><code class=\"language-java\">import org.springframework.amqp.core.Binding;\nimport org.springframework.amqp.core.BindingBuilder;\nimport org.springframework.amqp.core.DirectExchange;\nimport org.springframework.amqp.core.Queue;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\npublic class RabbitMQConfig {\n\n    @Bean\n    public Queue queue() {\n        return new Queue(&quot;queue&quot;);\n    }\n\n    @Bean\n    public DirectExchange exchange() {\n        return new DirectExchange(&quot;exchange&quot;);\n    }\n\n    @Bean\n    public Binding binding(Queue queue, DirectExchange exchange) {\n        return BindingBuilder.bind(queue).to(exchange).with(&quot;routingKey&quot;);\n    }\n}\n<\/code><\/pre>\n<\/li>\n<li>\n<strong>\u53d1\u9001\u548c\u63a5\u6536\u6d88\u606f\uff1a<\/strong> \u5728\u4e1a\u52a1\u903b\u8f91\u4e2d\u8c03\u7528\u6d88\u606f\u751f\u4ea7\u8005\u53d1\u9001\u6d88\u606f\uff0c\u6d88\u606f\u6d88\u8d39\u8005\u5c06\u76d1\u542c\u6307\u5b9a\u961f\u5217\u5e76\u5904\u7406\u63a5\u6536\u5230\u7684\u6d88\u606f\u3002<\/p>\n<pre><code class=\"language-java\">@Service\npublic class MyService {\n\n    private final MessageProducer messageProducer;\n\n    @Autowired\n    public MyService(MessageProducer messageProducer) {\n        this.messageProducer = messageProducer;\n    }\n\n    public void processMessage() {\n        \/\/ \u53d1\u9001\u6d88\u606f\n        messageProducer.sendMessage(&quot;Hello, RabbitMQ!&quot;);\n\n        \/\/ \u5904\u7406\u63a5\u6536\u5230\u7684\u6d88\u606f\n        \/\/ \uff08\u901a\u8fc7 @RabbitListener \u6ce8\u89e3\u7684\u65b9\u6cd5\u81ea\u52a8\u5904\u7406\uff09\n    }\n}\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>\u8fd9\u4e9b\u6b65\u9aa4\u6db5\u76d6\u4e86\u57fa\u672c\u7684 RabbitMQ \u96c6\u6210\u5230 Spring Boot \u9879\u76ee\u4e2d\u7684\u8fc7\u7a0b\u3002\u6839\u636e\u5b9e\u9645\u9700\u6c42\uff0c\u4f60\u53ef\u80fd\u9700\u8981\u6839\u636e\u4e1a\u52a1\u903b\u8f91\u548c\u6d88\u606f\u5904\u7406\u7684\u8981\u6c42\u8fdb\u884c\u66f4\u591a\u7684\u914d\u7f6e\u548c\u5b9a\u5236\u3002\u540c\u65f6\uff0c\u786e\u4fdd RabbitMQ \u670d\u52a1\u5668\u5904\u4e8e\u8fd0\u884c\u72b6\u6001\uff0c\u4ee5\u4fbf\u80fd\u591f\u6b63\u5e38\u8fde\u63a5\u548c\u901a\u4fe1\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u662f\u7684\uff0c\u96c6\u6210 RabbitMQ \u5230 Spring Boot \u9879\u76ee\u4e2d\u6d89\u53ca\u4ee5\u4e0b\u4e3b\u8981\u6b65\u9aa4\uff1a \u5f15\u5165\u4f9d\u8d56\uff1a \u5728\u9879\u76ee\u7684 po [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100],"tags":[],"class_list":["post-7648","post","type-post","status-publish","format-standard","hentry","category-springboot"],"_links":{"self":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/7648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/comments?post=7648"}],"version-history":[{"count":2,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/7648\/revisions"}],"predecessor-version":[{"id":16534,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/posts\/7648\/revisions\/16534"}],"wp:attachment":[{"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/media?parent=7648"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/categories?post=7648"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wx.kaifamiao.info\/index.php\/wp-json\/wp\/v2\/tags?post=7648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}