當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot高级-消息-RabbitMQ安装测试
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot高级-消息-RabbitMQ安装测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
docker imagesdocker ps -adocker pull registry.docker-cn.com/library/rabbitmq:3-managementregistry.docker-cn.com/library/rabbitmq 3-management d5e6601e80d6 9 months ago 149 MB現在我們已經有這個mq鏡像,我們就來啟動運行這個鏡像,docker run,-d代表后臺運行,-p我們暴露端口,這個帶管理界面的mq,他有兩個端口,首先把主機的5672映射到docker容器的5672,這個是客戶端和rabbitmq通信的端口,還有一個-p,15672,這個是管理界面,訪問web界面的端口,寫一個15672,這兩個端口暴露以后呢,來給當前起一個名字,我們就叫myrabbitmq,然后我們是啟動哪個鏡像的,可以把這個鏡像的id復制過來d5e6601e80d6docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq d5e6601e80d6然后我么來看docker ps -adocker rm 12e3b6dfbbc4docker start d5aa5f08e8f0我們就來訪問當前的虛擬機,localhost:15672現在我們看到rabbitmq的管理界面,我們使用默認的guest賬號和密碼,密碼也是guest,我們來點一個登陸,這就是我們的管理界面,上面這里有6個操作菜單,有概覽信息,包括當前的所有連接,以及里面的信道,包括當前Rabbitmq里面,有哪些Exchange,默認他已經放了這么多的交換器
還有當前定義的所有消息隊列,我們現在還沒有一個消息隊列,包括管理控制臺,在這里我們可以添加一些賬號密碼,包括Visual host,我們也可以添加一些虛擬主機,默認我們用的是/,在這里監控的是所有虛擬主機,我們可以切換到/,默認用的就是這個/,我們就來結合上一張的內容,消息路由機制,消息我們可以發給不同的交換器,我們就來測這三種,direct,fanout,和topic,交換器綁定這么四個隊列,這個四個隊列分別是china,和china.news,china.emps,cn.news,我的對列都是路由件的名稱,當我們消息到達不同的消息中間件以后,哪個隊列能夠收到這個消息
首先我們來創建一個交換器,我們來創建自己的,交換器的名字,創建第一個叫exchange.direct,我們把它復制來,來創建這個交換器,這個交換器的類型就選中為direct,然后這里有一個durable,表示我們這個交換器是否是持久化的,所謂的持久化就是,如果我們這里選擇的是持久化的,那我們下一次rabbitmq重啟,交換器還在,否則下次重啟,交換器就不在了,而默認的這些呢,我點進來,大家可以看一下,他們的這些規則,他們durable都是true的,持久化的,我們也來測試一個持久化的來測試一下,我現在來創建一個exchange.direct,他的類型是direct,它是持久化的,然后就不用指定了我就來點一個添加
這就添加了一個交換器,我把其他的也創建出來,還有一個叫exchange.fanout,添加一個exchage.fanout,我們把名字寫上,他的類型是fanout,也是持久化的,這里又有一個,我們再來添加一個exchage.topic,我們這里有三個不同的交換器,他的類型是topic,我們現在添加了三個交換器
那接下來我們再來添加一些消息隊列,在消息隊列里面點一個消息隊列,消息隊列里面點擊一個消息隊列,隊列我們就來添加這四個,第一個是china這個隊列,是否持久化的,你可以指定這個隊列自動刪除,我們就直接添加
這是第一個隊列,我再來添加一個隊列,china.news,我們來直接添加,我們再來添加一個隊列,叫china.emps,然后再是cn.news,我們相當于在這里添加了4個隊列,這個隊列要能工作,就要和交換器關聯綁定
我們來給direct來綁定這四個隊列,我們點進來direct以后呢,在下邊,這里有綁定我們來看一下,這里有一個綁定關系,綁定我們就在這里來綁定,我們綁定到queue,我們把這四個queue都綁定上,添加綁定規則,第一個我們綁定到china,路由件呢,路由件我也叫china,我點一個綁定
我就綁定了一個
china.news,我們還是把綁定到china.news,綁定,然后還有china.emps,名叫他,路由件也叫他,來綁定,還有cn.news,我們來綁定到這個隊列,路由件也叫他,來綁定,綁定好了以后呢,如果我們不想要哪個綁定關系,我們可以在這里點擊解綁
這個我們就綁定完了,給fanout也來綁定這四個,topic都來綁定,我們來找到其他的exchange,第一個來綁定china,路由件其實寫不寫都已經無所謂了,我們來加上,第二個我們來綁定china.news,路由件也叫他,第三個是china.emps,路由件也叫china.emps,還有cn.news,路由件也是cn.news,綁定上來,這是綁定了fanout
我們創建的topic交換器,topic交換器我們點進來,我們還是來給這四個消息隊列來綁,這個路由件按照我們指定,china是china.#,我們知道#是匹配0個或多個單詞,我點一個綁定,所有china.news,china.#,china.emps也是china.#,還有兩個news的,我們就來綁定成*.news,china.news我就來綁定一個*.news,綁定,還有cn.news,我們也綁定*.news,*是代表一個單詞來綁定,這些綁定規則就綁好了,接下來我們來給交換器里來發送一些消息
測試哪個隊列能夠收到,先來測試direct,我點進這個交換器,這個交換器綁定了這四個隊列,下面有一個發送消息,我們就來發一個消息,路由件我寫一個china,內容我們就來隨便寫吧,我們就寫direct.exchange.msg,隨便一個內容,我們寫了一個helloworld,我寫了這么一串字符串,然后我們來把它發出去,我來點一個發送,消息發送成功
對于direct交換器,它是完全匹配路由件的,所以只有china這個隊列能夠搜到,我們在隊列里可以看一下
這個隊列里面已經看到china,已經有一個message了
我們也可以點進message里面來看一下,我們可以用get message可以獲得,拿到這個消息,就是我們剛才發的消息
這是我們direct,我們寫的路由件是什么,就發給誰,絕對不會發給別人,這是我們說的點對點,我再來測一個fanout,這fanout我們之前說,發消息不管路由件是什么,它會全發過去,比如我們在這里發一個消息,我路由件我隨便寫,寫一個china.news,只到達china.news,我來寫一個消息,我們叫fanout.msg.haha,我來發布
我們在隊列里面,我發現所有隊列,后面三個收到消息了,china也收到了,總記錄成2了,所以每一個都收到內容了
它能夠拿到這個消息內容,這就是我們的fanout
不管你路由件是什么,我把這些內容全部發出去,接下來我再來試topic,這個topic就是根據路由件的匹配規則,我們來發送,我的路由件叫china.news,我來寫一個china.news.hahahaha,發一些消息,你的路由件是china.news,它符合那幾個規則,首先是china開始,后面是任意單詞的,相當于會發到china,china.emps,china.news,發到這個隊列里面,那么還符合什么規則呢,因為他的鍵也叫news,所以news也符合,所以他都能發過來,我先寫一個haha,相當于這四個隊列都能收到內容,我們來發送
消息到達了,我們來看我們的隊列,我來刷新一下,我們發現比原來都要加了一個1
說明他們都收到了,我們將來測試,還是給topic里面發,原來用的是china.news,這5個全匹配上了,那接下來我用hello.news,這個路由件我用hello.news,我們要發送消息,路由件叫hello.news,哈哈哈,我們再來寫點內容,這個hello.news呢,由于他只符合news后綴的,它會發送到china.news,cn.news,這兩個隊列里面,我們來點發送
這個發送成功了,我們在這個隊列里面來看一下,我們發現后兩個,china.news和cn.news,他們的消息數量又加了一個
我們可以獲取一下china.news里面的消息,比如我們在這里getMessage,這是fanout發來的,我們再獲取,每次獲取只能是fanout發來的,由于這個消息我們獲取來以后呢,我們可以給消息隊列應答,讓消息隊列把消息給刪除掉,我們選中第二種模式
我們再獲取一次,fanout就被刪除掉了
獲取的是china.news過來的,再來獲取,獲取的是hello.news過來的消息
再來獲取三個消息獲取完了就沒有了,其他的也都可以來試一下,來獲取消息的內容
?
總結
以上是生活随笔為你收集整理的SpringBoot高级-消息-RabbitMQ安装测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot高级消息-Rabbi
- 下一篇: SpringBoot高级-消息-Rabb