第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

RabbitMQ 入門教程

RabbitMQ 簡介
RabbitMQ 簡介
首頁 慕課教程 RabbitMQ 入門教程 RabbitMQ 入門教程 RabbitAdmin基礎(chǔ)概念詳解與配置

RabbitAdmin 基礎(chǔ)概念詳解與配置

1. 前言

Hello,大家好。本小節(jié)作為第三章-Spring 生態(tài)鏈與 RabbitMQ 整合的開篇,會(huì)為同學(xué)們介紹,在 Spring 生態(tài)鏈中,RabbitMQ 是如何與 Spring 進(jìn)行整合的,包括從最初的在 Spring 中初始化 RabbitMQ 、以及如何在 Spring 中使用 RabbitMQ 發(fā)送消息,以及后續(xù)在 Spring 中如何對(duì)消息進(jìn)行監(jiān)聽等基礎(chǔ)核心內(nèi)容。

本小節(jié)首先會(huì)為各位同學(xué)們介紹,如何在 Spring 中初始化 RabbitMQ 。包括初始化 RabbitMQ 所使用的 Spring 組件,以及該組件的基本使用方法,快速助力同學(xué)們將 RabbitMQ 與 Spring 進(jìn)行整合。

本節(jié)主要內(nèi)容:

  • RabbitAdmin 基礎(chǔ)概念概述;

  • RabbitAdmin 基礎(chǔ)配置概述。

2. RabbitAdmin 基礎(chǔ)概念概述

基礎(chǔ)概念:

在 Spring 中,我們首先會(huì)接觸到 RabbitAdmin 。我們都知道,RabbitMQ 是基于 AMQP 協(xié)議和 erlang 語言進(jìn)行編碼開發(fā)的,所以,在 Spring 中我們無法直接使用 RabbitMQ ,Spring 團(tuán)隊(duì)考慮到了這一點(diǎn),所以做了一種名為 Spring-AMQP 的中間層依賴,我們可以把這個(gè)依賴?yán)斫獬晌覀儜?yīng)用程序中的 Mapper 層,即數(shù)據(jù)庫與實(shí)體間的映射關(guān)系。

Spring-AMQP 中間層依賴規(guī)定了一種映射關(guān)系,這種映射關(guān)系可以直接把 RabbitMQ 中的各種元素與 Java 程序相對(duì)應(yīng),我們只需要通過像編寫普通 Java 程序那樣即可在 Spring 中使用 RabbitMQ 了。

RabbitAdmin 是 Spring-AMQP 中的核心基礎(chǔ)組件,是我們?cè)?Spring 中對(duì) RabbitMQ 進(jìn)行初始化的必須組件, 其提供了 RabbitMQ 中聲明交換機(jī)、聲明隊(duì)列、綁定交換機(jī)和隊(duì)列,以及綁定路由 Key 等其他 API ,RabbitAdmin 正式由此得名。

在介紹完 RabbitAdmin 基礎(chǔ)概念之后,下面讓我們來看一下如何對(duì) RabbitAdmin 進(jìn)行配置吧。

3. RabbitAdmin 基礎(chǔ)配置概述

在對(duì) RabbitAdmin 配置進(jìn)行介紹之前,我們需要先引入 RabbitAdmin 的依賴包。RabbitAdmin 的依賴包共有兩個(gè),接下來依次進(jìn)行介紹。

3.1 引入 RabbitAdmin

以 Maven 引入方式為例,引入代碼如下所示:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

上述依賴是 SpringBoot 的 Starter 中封裝好的 amqp 依賴,也是 Spring 與 RabbitMQ 進(jìn)行整合的基礎(chǔ)依賴。

<dependency>
  <groupId>com.rabbitmq</groupId>
  <artifactId>amqp-client</artifactId>
  <version>3.6.5</version>
</dependency>

上述依賴是 RabbitMQ 的客戶端依賴,即 amqp-client ,我們都知道 RabbitMQ 分為 Server 端和 Client 端,其中,Server 端正是我們所啟動(dòng)的 RabbitMQ Server 服務(wù),客戶端就是我們所有使用 RabbitMQ 的應(yīng)用程序。

本依賴正是 RabbitMQ 的 Client 端,如果我們想在應(yīng)用程序中使用 RabbitMQ ,那么這個(gè)依賴是必須的。

3.2 RabbitAdmin 基礎(chǔ)配置

在我們的應(yīng)用程序中引入相應(yīng)的 RabbitMQ 依賴之后,接下來我們需要在應(yīng)用程序中對(duì) RabbitMQ 進(jìn)行初始化,而進(jìn)行初始化的 Spring 組件就是我們的 RabbitAdmin 。

初始化 RabbitMQ 客戶端連接

初始化 RabbitMQ 客戶端連接的代碼如下所示:

代碼實(shí)現(xiàn):

@Bean
public ConnectionFactory connectionFactory () {
  CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
  cachingConnectionFactory.setAddresses("82.156.65.57:5672");
  cachingConnectionFactory.setUsername("guest");
  cachingConnectionFactory.setPassword("guest");
  cachingConnectionFactory.setVirtualHost("/");
  return cachingConnectionFactory;
}

代碼解釋:

第 1 行,我們使用 Spring 的 Bean 注解將我們聲明的 connectionFactory 方法注入到 Spring 容器中。

第 2 行,我們使用 Spring-AMQP 中的 ConnectionFactory 類,來聲明了一個(gè)名為 connectionFactory 的連接工廠方法,用于對(duì) RabbitMQ 進(jìn)行初始化。

第 3 行,我們實(shí)例化了一個(gè) cachingConnectionFactory 實(shí)例,該實(shí)例是 Spring-AMQP 中對(duì) RabbitMQ 連接信息進(jìn)行初始化的基礎(chǔ)實(shí)例,所有的 RabbitMQ 連接信息均來源于該實(shí)例。

第 4-7 行,我們通過 cachingConnectionFactory 實(shí)例的 setAddresses 、setUsername 、setPassword 、setVirtualHost 方法來分別初始化 RabbitMQ Server 的服務(wù)地址、用戶名、密碼、虛擬主機(jī)。

第 8 行,我們將填充好的 cachingConnectionFactory 實(shí)例進(jìn)行返回,以初始化完成 RabbitMQ 客戶端連接。

通過上述代碼的配置,我們已經(jīng)初始化了 RabbitMQ 的客戶端連接,接下來我們需要繼續(xù)初始化 RabbitAdmin ,以在 Spring 中管理 RabbitMQ 。

初始化 RabbitAdmin 的方法如下代碼所示:

@Bean
public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
   RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
   rabbitAdmin.setAutoStartup(true);
   return rabbitAdmin;
}

代碼解釋:

第 2 行,我們 RabbitAdmin 類來聲明了一個(gè)名為 rabbitAdmin 的方法,用來初始化 RabbitAdmin 。

第 4-6 行,我們首先根據(jù)上述的 connectionFactory 來實(shí)例化了一個(gè) RabbitAdmin 實(shí)例;然后通過 rabbitAdmin 實(shí)例的 setAutoStartup 方法置位 true 來設(shè)置 RabbitAdmin 的自動(dòng)啟動(dòng);最后,我們將設(shè)置好的 rabbitAdmin 實(shí)例進(jìn)行返回,以使用 RabbitAdmin 。

Tips: 1. @Bean 注解是 Spring 容器中自帶的注解,其作用就是將我們應(yīng)用程序中的類,或者方法來注入到 Spring 容器中,作為 Spring 配置的一部分。
2. 當(dāng)我們?cè)O(shè)置好了 connectionFactory 和 rabbitAdmin 組件之后,一旦啟動(dòng)我們的應(yīng)用程序,這兩個(gè)組件就會(huì)自動(dòng)進(jìn)行初始化。

RabbitAdmin 核心 API 介紹

下面我們來看一下在 RabbitAdmin 中,都有哪些核心的 API 。

declareExchange() 聲明交換機(jī)的方法;

declareQueue() 聲明隊(duì)列的方法;

declareBinding() 將交換機(jī)與隊(duì)列進(jìn)行綁定的方法;

purgeQueue() 清空指定隊(duì)列中所有的消息的方法。

在 RabbitAdmin 中,我們可以通過實(shí)例化對(duì)象的方法,來創(chuàng)建一個(gè)交換機(jī),或者一個(gè)隊(duì)列,像下面這樣:

new DirectExchange("test.direct", false, false)
new Queue("test.direct.queue", false)

在上述 new DirectExchange 方法中,第一個(gè)參數(shù)表示交換機(jī)的名稱;第二個(gè)參數(shù)表示是否持久化;第三個(gè)參數(shù)表示是否自動(dòng)刪除。

在上述 new Queue 方法中,第一個(gè)參數(shù)表示隊(duì)列的名稱;第二個(gè)參數(shù)表示是否持久化。

Tips: 這兩個(gè)方法在 RabbitAdmin 中使用頻率很高,同學(xué)們注意。

那么,我們應(yīng)該如何使用 RabbitAdmin 這些核心的 API 呢,如下代碼所示:

@Autowired
private RabbitAdmin rabbitAdmin;
rabbitAdmin.declareExchange(new DirectExchange("test.direct", false, false));
rabbitAdmin.declareQueue(new Queue("test.direct.queue", false));
rabbitAdmin.declareBinding(new Binding("test.direct.queue", Binding.DestinationType.QUEUE,
                "test.direct", "direct", new HashMap<>()));

代碼解釋:

第 1-2 行,我們使用 Autowired 注解,來講 RabbitAdmin 注入進(jìn)來,并用一個(gè)私有變量 rabbitAdmin 來接收。

第 3 行,我們使用 declareExchange 方法來聲明了一個(gè)名為 test.direct 的交換機(jī)。

第 4 行,我們使用 declareQueue 方法來聲明了一個(gè)名為 test.direct.queue 的隊(duì)列。

第 5 行,我們使用 declareBinding 方法來將我們聲明的交換機(jī)和消息隊(duì)列進(jìn)行綁定,其中,test.direct.queue 為我們聲明的隊(duì)列;Binding.DestinationType.QUEUE 為綁定的類型;test.direct 為我們聲明的交換機(jī);direct 為我們要綁定的交換機(jī)的類型;new HashMap<>() 表示隊(duì)列的最后一個(gè) arguments 屬性,其屬性是 Map 類型,這里置為了空。

我們可以通過這些核心的 API 來聲明 RabbitMQ 中最基礎(chǔ)的元素,包括交換機(jī)、消息隊(duì)列、路由 Key ,以及綁定規(guī)則。

Tips: 1. Binding.DestinationType 這種類型,除了 QUEUE 隊(duì)列類型,還有一個(gè) EXCHANGE 類型,同學(xué)們可以課下進(jìn)行了解;
2. 了解 RabbitAdmin 的基礎(chǔ)概念和基礎(chǔ)配置,是 RabbitMQ 整合 Spring 基礎(chǔ)中的基礎(chǔ),同學(xué)們要了解每個(gè)基礎(chǔ)概念和核心 API 。

4. 小結(jié)

本小節(jié)為同學(xué)們介紹了在 Spring 生態(tài)中,如何集成 RabbitMQ 。從介紹 RabbitAdmin 基礎(chǔ)概念開始,到引入 RabbitAdmin 依賴,最后到 RabbitAdmin 基礎(chǔ)配置介紹結(jié)束,詳細(xì)介紹了如何在 Spring 中,初始化 RabbitMQ 、聲明交換機(jī)、聲明消息隊(duì)列,以及建立綁定關(guān)系等,旨在幫助同學(xué)們可以清楚地入門 RabbitAdmin ,我們只有在優(yōu)先掌握了 RabbitAdmin 之后,才可以在 Spring 中進(jìn)行后續(xù)操作,同學(xué)們加油。