積少成多 ---- 僅以此致敬和我一樣在慢慢前進的人兒
問題一:什麼是rabbitmq
下面就是些個人的感受,
rabbitmq 就是乙個遵循amqp協議(這個是啥不清楚) 的訊息佇列的實現,用於伺服器和伺服器之間的連線,
producer可以傳送訊息到訊息佇列裡面,customer可以消費訊息佇列
兩者之間的方式有很多, 如常見的點對點(1v1)(專業術語:direct), 點對多(1v多)(專業術語:fanmout)
轉化為大白話: a傳送一條訊息,這個訊息只有b能接受到,這就是點對點
a傳送一條訊息, 這個訊息b,c,d都可以接收到, 這個就是點對多
那麼問題來了: 為什麼要使用rabbitmq (使用場景是什麼)
非同步處理、應用解耦、流量削峰等
在springboot 中如何使用呢?
我自己使用的docker 執行 rabbitmq的映象來做的,所以使用rabbitmq伺服器的具體安裝不太清楚
在springboot 中主要步驟如下:
1、 引入依賴
org.springframework.bootspring-boot-starter-amqp
2、 配置rabbitmq的連線(rabbit 本身就是乙個伺服器,它的連線方式就像jdbc連線資料一般)
# 配置rabbitmq的(可以自己檢視rabbitproperties 去檢視需要配置的項,以及預設的配置項)sring:rabbitmq:
host: 192.168.3.48
port: 5672
virtual-host: /
username: guest
password: guest
3、發布訊息和接受訊息案例
# 發布訊息測試@test
public void test()
# 消費訊息測試
@testpublic void receive()
4、 使用@rabbitlistener 註解(這部分的詳細的使用邏輯以及原理一竅不通)
使用@rabbitlistener註解需要開啟rabbitmq註解
@enablerabbit@enablecachingpublic static void main(string args)
}
使用案列如下:
@rabbitlistener(queues = "qf")public void receive(object person)system.out.println();
system.out.println("接受人" + person);
system.out.println(person.tostring());
}}
該註解queues引數用於指定監聽的佇列,可以監聽多個佇列
該註解標註的方法的引數,用於匹配佇列裡面的訊息,如果裡面是相同型別的資料則直接進行資料封裝獲取,如果不一樣的
則不進行封裝,但是也會消費一條訊息。
白話就是:我取一條訊息,引數跟我對應那就給你,如果不相同那就不給你了,但是訊息我也取出來。
5、 注意事項:
在引入依賴的時候,其中rabbitautoconfiguration這個類 幫我們自動配置了很多東西,其中將訊息的body儲存到佇列中的序列化的方式也配置了
但是預設的序列化是序列化為byte陣列的方式儲存到佇列中,造成閱讀障礙。
所以自己配置了他的messageconverter ,如下:
@configurationpublic class myamqpconfig
}
目前因為只是了解的比較淺,所以只能記錄這些簡單的東西,待後面深入了解之後,
望你回來新增,這些資料
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...
深入了解A
一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...
深入了解Dojo Data
譯自http www.sitepen.com blog 2010 10 13 dive into dojo data 使用dojo data有助於快速建立web應用的介面,且易於嵌入各種資料來源。它在使用者介面與底層資料之間提供了一層抽象層,使得使用者介面開發人員能夠專注於ui的開發,而無需擔心資料...