009 客戶端編碼
一 .概述
Rabbitmq的java客戶端的API是本人見過的最垃圾的API的設計,沒有之一.
在這些API之中,竟然使用了方法的重載代表了不同的行為,這也是服氣到不行.
二 .消息的發布
我們首先看看核心的API:
void basicPublish(String exchange, String routingKey, boolean mandatory, BasicProperties props, byte[] body)
throws IOException;
我們可以從上面看到,發送一個消息最重要的就是制定一個交換機和路由鍵,然後最後的參數就是設置消息的內容,中間的參數就是一些附加的屬性.
我們還發現了一個mandatory參數,這個在後面去介紹.
我們一般不會使用最長的那一個方法,其中的immediate這個參數已經被廢棄了.
記住:
[1]找到一個交換機
[2]給出一個路由鍵
[3]發送一個消息
參數和mandatory需要的時候再去設置.
二 .聲明交換機
在上面,我們看到發布一個消息首先需要聲明一個交換機.
void exchangeDeclareNoWait(String exchange, String type, boolean durable, boolean autoDelete, booleaninternal, Map<String, Object> arguments) throws IOException;
我們就介紹一下這個最長的方法.
[1]交換機的名稱
[2]交換機的類型
[3]交換機是否持久化
[4]是否自動刪除(如果這個交換機沒有任何一個隊列與它有關系,那麽它就會被自動刪除)
[5]internal : 這個我們一般設置為false
[6]附加的參數,對交換機的屬性進行設置,這個在後面需要的時候會去介紹
三 .聲明消息隊列
Queue.DeclareOk queueDeclare(String queue, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments) throws IOException;
我們只需要介紹這個最長的參數就可以了.
[1]消息隊列的名稱
[2]是否持久化
[3]是否排他 : 那一個連接(Connection)聲明的他,這個隊列就會對這個連接有效,當連接斷開的時候,這個隊列自動刪除了.一般情況下,我們不會設置的.
[4]是否自動刪除
[5]附加的參數
四 .綁定
所謂的綁定在前面已經說明過了,就是將消息隊列和交換機進行連接,其中,我們需要給出一個綁定鍵.
同時還存在交換機和交換機的綁定,這種我們現在先不去說.
Queue.BindOk queueBind(String queue, String exchange, String routingKey, Map<String, Object> arguments) throws IOException;
上面的參數比較的簡單,就是給出一個隊列的名稱,然後一個交換機的名稱,然後給出一個綁定鍵的名稱就好了.
009 客戶端編碼