1. 程式人生 > >009 客戶端編碼

009 客戶端編碼

刪除 bit intern 核心 med ued bind del 情況下

一 .概述

  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,
                               boolean 
internal, 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 客戶端編碼