1. 程式人生 > >RabbitMQ入門:在Spring Boot 應用中整合RabbitMQ

RabbitMQ入門:在Spring Boot 應用中整合RabbitMQ

在上一篇隨筆中我們認識並安裝了RabbitMQ,接下來我們來看下怎麼在Spring Boot 應用中整合RabbitMQ。

先給出最終目錄結構:

搭建步驟如下:

  1. 新建maven工程amqp
  2. 修改pom檔案,引入spring-boot-starter-amqp和spring-boot-starter-test
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    > <modelVersion>4.0.0</modelVersion> <groupId>com.sam</groupId> <artifactId>amqp</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId
    >spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> </parent> <properties> <javaVersion>1.8</javaVersion> </properties> <dependencies> <!-- 引入amqp依賴,它能很好的支援RabbitMQ --> <
    dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <!-- 引入test依賴,這次需要用到JUnit --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> </dependencies> </project>
  3. 新建application.properties配置檔案,主要就是配置下連線RabbitMQ的資訊:
    spring.application.name=rabbitmq-hello
    #config rabbitmq info
    spring.rabbitmq.host=localhost
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
  4. 新建啟動類,這裡沒什麼特殊的,就是普通的spring boot啟動類
    /**
     * 這裡沒什麼特殊的地方,就是普通的spring boot 配置
     *
     */
    @SpringBootApplication
    public class RabbitMQApp {
    
        public static void main(String[] args) {
            SpringApplication.run(RabbitMQApp.class, args);
        }
    }
  5. 建立生產者類,通過AmqpTemplate實現訊息的傳送,AmqpTemplate介面定義了一套針對AMQP協議的基礎操作。在Spring Boot中會根據配置來注入具體的實現。這裡我們會產生一個字串,併發送到名為hello的佇列中。
    @Component
    public class Sender {
    
        @Autowired
        AmqpTemplate rabbitmqTemplate;
    
        /**
         * 傳送訊息
         */
        public void send() {
            String content = "Sender says:" + "'hello, I'm sender'";
            System.out.println(content);
            rabbitmqTemplate.convertAndSend("hello", content);
        }
    }
  6. 建立消費者類,需要用到@RabbitListener來定義對hello佇列的監聽,並用@RabbitHandler註解來指定對訊息處理的方法。我們這裡實現了對hello佇列的消費。
    /**
     * 通過@RabbitListener對hello佇列進行監聽
     *
     */
    @Component
    @RabbitListener(queues="hello")
    public class Receiver {
    
        /**
         * 通過@RabbitHandler宣告的方法,對hello佇列中的訊息進行處理
         */
        @RabbitHandler
        public void receiver(String str) {
            System.out.println("Receiver says:[" + str + "]");
        }
    }
  7. 編寫RabbitMQ的配置類,配置類可以配置佇列、交換器、路由等高階資訊。我們這裡為了簡單,只配置佇列,其他的採用預設配置。
    /**
     * rabbitmq配置類,
     * 為了簡單,我們這裡只配置了Queue
     * 至於exchanges、brokers等用的預設配置
     *
     */
    @Configuration
    public class RabbitConfig {
    
        @Bean
        public Queue helloQueue() {
            return new Queue("hello");
        }
        
        
    }
  8. 編寫測試類,用來呼叫訊息生產者
    @RunWith(SpringJUnit4ClassRunner.class)
    @SpringBootTest(classes=RabbitMQApp.class)
    public class HelloTest {
    
        @Autowired
        private Sender sender;
    
        /**
         * 呼叫生產者進行訊息傳送
         */
        @Test
        public void hello() throws Exception{
            sender.send();
        }
    }
  9. 執行啟動類,啟動後控制檯會有下面的提示內容:
  10. 執行測試類,在測試類的控制檯會列印我們打的log內容

  

  切換到amqp應用的控制檯,能看到列印:

  

  在管理頁面中我們能看到Connections和Channels中包含了當前連線的條目:

 在整個生產和消費的過程中,生產和消費是一個非同步操作,這是分散式系統中要使用訊息代理的重要原因。

相關推薦

RabbitMQ入門Spring Boot 應用整合RabbitMQ

在上一篇隨筆中我們認識並安裝了RabbitMQ,接下來我們來看下怎麼在Spring Boot 應用中整合RabbitMQ。 先給出最終目錄結構: 搭建步驟如下: 新建maven工程amqp 修改pom檔案,引入spring-boot-starter-amqp和spring-boot-sta

三分鐘學會在spring boot 專案使用RabbitMq做訊息佇列

第一步:在spring boot專案中新增RabbitMq的maven依賴 <dependency> <groupId>org.springframework.boot</groupId>

輕輕鬆鬆學習SpringBoot2第二十五篇 Spring Boot和Mongodb整合(完整版)

今天主要講的是Spring Boot和Mongodb整合我們先來回顧一下前面章節的相關內容前面我們講了SpringBoot和mysql整合,並且講了操作資料庫的幾種方式自動生成表資料庫操作操作篇回到正題,mongodb的安裝在這就不累述了,win版本的去官網下載,然後一直下一

Guava Cache本地快取在 Spring Boot應用的實踐

概述 在如今高併發的網際網路應用中,快取的地位舉足輕重,對提升程式效能幫助不小。而 3.x開始的 Spring也引入了對 Cache的支援,那對於如今發展得如火如荼的 Spring Boot來說自然也是支援快取特性的。當然 Spring Boot預設使用的是 SimpleCacheConfigurati

Spring Boot應用監控tomcat,druid連線池狀態

這篇文章記錄一下如何在spring boot中監控tomcat,druid連線池狀態,之前我寫過一篇文章介紹過類似的,具體背景和監控資料的收集部分這裡就不贅述,可以參考在SPRING BOOT應用監控執行緒池的狀態背景隨著流量的增大,我們急需監控各個微服務部署的tomcat和

Kotlin入門eclipse開發環境整合kotlin外掛失敗問題

這兩天沒事想看看kotlin玩,官方給出的kotlin開發環境如下圖四種方式 kotlin官網:http://kotlinlang.org/ kotlin語言中文站:https://www.kotlincn.net/   現在主流的肯定是Intelli

曹工雜談Spring boot應用,自己動手用Netty替換底層Tomcat容器

前言 問:標題說的什麼意思? 答:簡單說,一個spring boot應用(我這裡,版本升到2.1.7.Release了,沒什麼問題),預設使用了tomcat作為底層容器來接收和處理連線。 我這裡,在依賴中排除了tomcat,使用Netty作為了替代品。優勢在於,啟動飛快,執行緒數量完全可控(多少個netty的

新手入門教程-------Spring Boot整合RabbitMQ

AMQP:是Advanced Message Queuing Protocol的簡稱,高階訊息佇列協議,是一個面向訊息中介軟體的開放式標準應用層協議。   定義了以下特性: 訊息方向 訊息佇列 訊息路由(包括:點到點和釋出-訂閱模式) 可靠性 安全

spring-boot實戰【07】【轉】Spring BootWeb應用的統一異常處理

http integer private fin ima lex clas 友好 ref 我們在做Web應用的時候,請求處理過程中發生錯誤是非常常見的情況。Spring Boot提供了一個默認的映射:/error,當處理中拋出異常之後,會轉到該請求中處理,並且該請求有一個全

第九篇Spring Boot整合RabbitMQ

RabbitMQ是一個開源的訊息代理和佇列伺服器,用來通過普通協議在完全不同的應用之間共享資料,或者簡單地將作業佇列以便讓分散式伺服器進行處理。訊息佇列使用訊息將應用程式連線起來,這些訊息通過像RabbitMQ這樣的訊息代理伺服器在應用程式之間路由。這篇文章將帶你瞭解怎麼整合Rabbit

redis 在spring boot工程應用(三) 問題發現與解決 反序列化 報錯

問題1:序列化和反序列話問題 org.hibernate.LazyInitializationException: failed to lazily initialize a collection, could not initialize proxy - no Sessi

Spring Boot (十三) Spring Boot 整合 RabbitMQ

1. 前言 RabbitMQ 是一個訊息佇列,說到訊息佇列,大家可能多多少少有聽過,它主要的功能是用來實現應用服務的非同步與解耦,同時也能起到削峰填谷、訊息分發的作用。 訊息佇列在比較主要的一個作用是用來做應用服務的解耦,訊息從訊息的生產者傳遞到訊息佇列,消費者從訊息佇列中獲取訊息並進行消費,生產者不需要

RabbitMq 集成 spring boot 消息隊列 入門Demo

spring boot rabbitmq 入門集成spring boot 集成 RabbitMq還是很方便的。現在來一個簡單的例子來集成rabbitmq。入門demo。主要概念:其中比較重要的概念有 4 個,分別為:虛擬主機,交換機,隊列,和綁定。虛擬主機:一個虛擬主機持有一組交換機、隊列和綁定。為什麽需要多

spring-boot實戰【06】【轉】Spring Boot使用Swagger2

des values 產生 service sof div 解決 整合 data 由於Spring Boot能夠快速開發、便捷部署等特性,相信有很大一部分Spring Boot的用戶會用來構建RESTful API。而我們構建RESTful API的目的通常都是由於多終端的

spring-boot實戰【12】Spring Boot使用JavaMailSender發送郵件

nts fun rop oci 單元測試 prop 快速入門 cat tid 相信使用過Spring的眾多開發者都知道Spring提供了非常好用的JavaMailSender接口實現郵件發送。在Spring Boot的Starter模塊中也為此提供了自動化配置。下面通過實例

Docker 容器整合 Spring Boot 應用

docker 微服務 容器 devops jfrog 在本文中,我們將重點介紹如何對 Spring Boot 應用程序進行 Docker 容器化以在獨立的環境(即容器)中運行它。此外,我們還會展示如何創建容器的集成,它們彼此依賴並在虛擬專用網絡中彼此鏈接。我們還能看到如何通過單個命令進行統

《01.Spring Boot連載Spring Boot入門介紹》

spring boot maven 1 Spring Boot的概述Spring Boot是開發者和Spring 本身框架的中間層,幫助開發者統籌管理應用的配置,提供基於實際開發中常見配置的默認處理(即習慣優於配置),簡化應用的開發,簡化應用的運維;總的來說,其目的Spring Boot就是為了對Ja

Spring Boot應用程序遷移到Java9兼容性

sam 最新 ive 就業 ont add home index world 將 Spring Boot 應用程序遷移到 Java 9:兼容性   隨著 Java 9 的到來,關於如何遷移應用程序以使用模塊系統有很多的討論。遺憾的是,大多數文章的焦點都集中於簡單的 Hell

springboot(三)Spring bootRedis的使用

red implement getc factory pro acc 系統 val fault spring boot對常用的數據庫支持外,對nosql 數據庫也進行了封裝自動化。 redis介紹 Redis是目前業界使用最廣泛的內存數據存儲。相比memcached,Red

springboot(十一)Spring bootmongodb的使用

gpo for 當前 window 公司 多表 erlang 大量 secondary mongodb是最早熱門非關系數據庫的之一,使用也比較普遍,一般會用做離線數據分析來使用,放到內網的居多。由於很多公司使用了雲服務,服務器默認都開放了外網地址,導致前一陣子大批 Mong