1. 程式人生 > >RabbitMQ直接模式(Direct)

RabbitMQ直接模式(Direct)

2.2 直接模式(Direct)

2.2.1 什麼是Direct模式

我們需要將訊息發給唯一一個節點時使用這種模式,這是最簡單的一種形式。

任何傳送到Direct Exchange的訊息都會被轉發到RouteKey中指定的Queue。

1.一般情況可以使用rabbitMQ自帶的Exchange:”"(該Exchange的名字為空字串,下文稱其為default Exchange)。

2.這種模式下不需要將Exchange進行任何繫結(binding)操作

3.訊息傳遞時需要一個“RouteKey”,可以簡單的理解為要傳送到的佇列名字。

4.如果vhost中不存在RouteKey中指定的佇列名,則該訊息會被拋棄。

2.2.2 建立佇列

做下面的例子前,我們先建立一個叫test1的佇列。

Durability:是否做持久化 Durable(持久) transient(臨時)

Auto delete : 是否自動刪除

2.2.3 程式碼實現-訊息生產者

(1)建立工程rabbitmq_demo,引入amqp起步依賴 ,pom.xml如下:

<parent>     

<groupId>org.springframework.boot</groupId>         

<artifactId>spring‐boot‐starter‐parent</artifactId>         

<version>2.0.1.RELEASE</version>         

<relativePath/>          

</parent>     

<properties>     

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>         

</properties>     

<dependencies>     

<dependency>         

<groupId>org.springframework.boot</groupId>             

<artifactId>spring-boot-starter-amqp</artifactId>             

</dependency>         

<dependency>         

<groupId>org.springframework.boot</groupId>             

<artifactId>spring-boot-starter-test</artifactId>             

<scope>test</scope>             

</dependency>

</dependencies>

(2)編寫配置檔案application.yml

 spring:

  rabbitmq:

    host: 192.168.184.134

(3)編寫啟動類

@SpringBootApplication

public class Application {

    public static void main(String[] args) {

        SpringApplication.run(Application.class);

    }

}

(4)編寫測試類

@RunWith(SpringRunner.class)

@SpringBootTest(classes=Application.class)

public class MqTest {

    @Autowired

    private RabbitTemplate rabbitTemplate;

    @Test

    public void testSend(){

        rabbitTemplate.convertAndSend("test1","我要紅包");

    }

}

執行測試方法

2.2.4 程式碼實現-訊息消費者

(1)編寫訊息消費者類

@Component

@RabbitListener(queues="test1" )

public class Customer1 {

    @RabbitHandler

    public void showMessage(String message){

        System.out.println("itcast接收到訊息:"+message);

    }

}

(2)執行啟動類,可以在控制檯看到剛才傳送的訊息

2.2.5 測試

開啟多個消費者工程,測試執行訊息生產者工程,會發現只有一個消費者工程可以接收

到訊息。

如何在IDEA中多次啟動同一個程式呢?

(1)選擇IDEA右上角的類名稱按鈕

(2)選擇Edit Configurations

(3)在彈出視窗中取消單例模式 ,點選OK

server: 

  port: 9202

執行後在控制檯可以看到多個視窗

相關推薦

RabbitMQ直接模式Direct

2.2 直接模式(Direct) 2.2.1 什麼是Direct模式 我們需要將訊息發給唯一一個節點時使用這種模式,這是最簡單的一種形式。 任何傳送到Direct Exchange的訊息都會被轉發到RouteKey中指定的Queue。 1.一般情況可以使用rabb

RabbitMQ學習第四記:路由模式direct

exceptio 指定 手動 ack key static ech 保存日誌 sta 1、什麽是路由模式(direct)   路由模式是在使用交換機的同時,生產者指定路由發送數據,消費者綁定路由接受數據。與發布/訂閱模式不同的是,發布/訂閱模式只要是綁定了交換機的隊列都會收

RabbitMQ訊息佇列 fanout 廣播模式

先粘程式碼 生產者 ConnectionFactory connectionFactory = new ConnectionFactory(); Connection connection = connectionFa

RabbitMQ使用教程:釋出/訂閱模式—Publish/Subscribe

一、釋出/訂閱模式說明 今天我們來學習一點新的東西,之前我們是將一個訊息傳送給了一個特定的消費者,今天的做法完全不同,不再發送給某一個消費者,而是將一個訊息傳送給多個消費者,這便是:釋出/訂閱模式。 我們將使用該模式來實現一個日誌系統:一個程式產生日誌,一個

linux(deepin15.4)下部署叢集RabbitMQ訊息佇列映象模式

第三天 一、映象佇列策略 1、映象佇列可以防止主節點掛掉,整個佇列就癱瘓了。所以要想在主節點掛掉或故障也能正常應用,就要複製佇列內容到叢集裡的每個節點,須要建立映象佇列。 2、映象模式配置完成之後,會存在一個主節點和多個映象節點(或稱為熱備佇列,Slave

GOF23—單例模式2

應該 一個 img bsp 漏洞 資源 nbsp 創建 就會 本文介紹單例模式(不包含枚舉單例模式)漏洞問題以及如何防止漏洞   1.反射可以破解單例模式,例子如下:       此時,我們運行Client類,發現s1和s2是一個對象,但s3和s4是不同的對象。 那麽如何防

『ORACLE』 設置Edit模式11g

配置 修改 sqlplus spa size span -s ont def SQL>define_editor=‘vi‘ 執行一條SQL語句再修改編輯 SQL>ed 可以將define _editor=‘vi‘這句話寫在sqlplus 的啟動配置腳本中『ORA

設計模式之適配器模式Adapter

功能 系統 第三方 抽象 可能 對象 期待 技術分享 適配器 我想要是說適配器模式,提一下“電壓”、“耳機”、“充電器”和 "USB” 的例子應該是比較恰當的了。就說說自己的親身經歷,我原來的手機是NOKIA5730。後來也不知道有沒有國行,但是不推薦大家買這款手機,不適

設計模式之建造者模式Builder

人的 做出 字體 存在 分享 定義 固定 也不會 抽象方法 一個人活到70歲以上,都會經歷這樣的幾個階段:嬰兒,少年,青年,中年,老年。並且每個人在各個階段肯定是不一樣的呀,我覺得可以說世界上不存在兩個人在人生的這5個階段的生活完全一樣,但是活到70歲以上的人,都經歷了這幾

[轉]設計模式--單例模式懶漢式和餓漢式

打印 是否 調用構造 餓漢 一段 tools 會有 輸出結果 java 單例模式是設計模式中比較簡單的一種。適合於一個類只有一個實例的情況,比如窗口管理器,打印緩沖池和文件系統, 它們都是原型的例子。典型的情況是,那些對象的類型被遍及一個軟件系統的不同對象訪問,因此需要一個

《跨界雜談》商業模式:金融

公眾 匯率 白狼 wcf qrcode 行業 mom 運動 bsp 2015-03-14 雷震子 雷震子 金融具有非常強的專業性,非常easy把筆者落到班門弄斧的境界。但也不想謹言慎行,大家將就看吧,別太把豆包當幹糧就中了。 金融歷史悠久,伴隨商業而生,

設計模式: 工廠模式

dem blank hibernate 執行 oid code 做出 void actor 工廠模式 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。 在工廠模式中,我們在創建

單例模式Singleton

ech 單例模式 bsp 在線 創建 private 解決 餓漢式 dir 1.解決的問題:使得一個類只能夠創建一個對象。2.如何實現: ①私有化構造器,使得在類的外部不能調用該構造器 ②在類的內部創建一個實例 ③私有化該對象,通過公共的方法來調用(返回該

工廠模式

log ofa clas pri com urn 兩層 實現 需求 工廠方法模式:簡單工廠模式的進一步抽象和推廣。工廠方法模式把簡單工廠中的具體的工廠類劃分為兩層:抽象工廠層+具體工廠層,類圖如下: 涉及到的角色: 抽象產品角色:所有產品的共同父類或共有接口,用以實現多態

JAVA設計模式之單例模式

單例對象 日誌 locking anti 常見 基本上 title 加載 懶漢式 本文繼續介紹23種設計模式系列之單例模式。 概念:  java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。  單例模式有以下特

PHP面向對象單例模式懶漢式

檢查 私有 構造函數 知識 單例 懶漢 變量 eof php面向對象 知識點: 一、三私一公: ①、私有靜態屬性,又來儲存生成的唯一對象 ②、私有構造函數 ③、私有克隆函數,防止克隆——clone ④、公共靜態方法,用來訪問靜態屬性儲存的對象,如果沒有對象,則生成此單例 二

代理模式Proxy

p s log 場景 private span 方法 陌生 機制 特殊 代理模式(Proxy) 代理模式:簡單明了。簡稱代理商,對代理這個詞想必大家都不陌生,現在微信上,幾乎全是各種代理商,哈哈哈。。。不錯。我們的代理模式,也是如此。用java語言來說。就是,替原對象進行一

跟我學設計模式視頻教程——管擦者模式,責任鏈模式

tar eight color font content 設計模式 name -m ack 課程視頻 觀察者模式(下) 責任鏈模式(上) 課程筆記 課程筆記 課程代碼 課程代碼 新課程火熱報名中 課程介紹

java面向對象與設計模式

工廠方法模式 java 選擇 缺點 一個 聯系 面向 抽象工廠 pan 第五式 抽象工廠模式 定義:提供一個創建一系列相關或相互依賴對象的接口,而無需指定他們具體的類。(創建的對象之間有約束) 抽象工廠模式的本質:選擇產品簇的實現 優點:分離接口和產品簇,使得切換產品簇變得

設計模式觀察者模式

針對 ray 需求 als bool 模式 null rri 主動 觀察者模式 定義了對象之間的一對多的依賴,這樣一來,當一個對象狀態改變時,他的 多有依賴都會受到通知並自動更新。 本例為一個溫度基站,和三個終端。溫度基站為廣播類WeatherData,三個終端監聽者類分別