1. 程式人生 > >關於AMQP協議的一些疑問

關於AMQP協議的一些疑問

正在學習中,將一些疑問記錄下來:

queue中的訊息,只要sub端訂閱了,就能接收?那麼本不該接收的人,也能接收,是否有安全隱患?

A:有身份認證的,如user:password之類

queue中的訊息,如果要投遞給多個接收端(比如A和B),那麼,投遞給A之後,那個訊息在queue中會被刪除嗎?如果被刪除了,就不能再投遞給B了?

AMQP對message持久化的處理,是怎麼規定的?哪些message,在什麼情況下會被持久化?

持久化的訊息是以什麼形式儲存的?之後又是怎樣被重新載入的?

AMQP的server對記憶體要求是不是比較大,在讀寫量巨大的情況下?記憶體較小的機器該怎麼辦?

AMQP的三層中的最底層的傳輸層協議可以任意替換嗎?怎麼替換?

訊息交換、檔案傳輸、流傳輸、遠端程序呼叫 在AMQP中是如何體現的?

AMQP傳輸的資料可以是加密的嗎?如果可以,該怎樣加密解密?

“一個連線支援多個會話” ?

怎樣以root身份檢視rabbitmq的配置,如vhost,user和password等資訊?

A向rabbitmq做了sub,然後B向rabbitmq做pub,A通過rabbitmq收到訊息。問題:A sub之後,能斷開和rabbitmq的連線嗎?如果斷開了,rabbitmq能主動向A發起連線嗎?

希望從rabbitmq接收訊息的client是不是都要主動向rabbitmq發起連線並保持長連線?並且之後所有的接收訊息都是通過這同樣一個連線做的?

todo list:

AMQP協議:

xxx對rabbitmq c++版的封裝,build通過

上面build的client和rabbitmq-c的server通訊

xxx的封裝中,對連線池,執行緒池的處理

tesseract不讀檔案,改讀影象檔案的資料流

c++ client呼叫tesseract的庫

===================================

AMQP是非對稱的,客戶端生產和消費訊息,伺服器儲存和路由這些訊息

路由關鍵字(Routing Key):一個訊息頭,交換器可以用這個訊息頭決定如何路由某條訊息

持久儲存(Durable):一種伺服器資源,當伺服器重啟時,儲存的訊息資料不會丟失


虛擬主機(Virtual Host):一批交換器、訊息佇列和相關物件。虛擬主機是共享相同的身份認證和加密環境的獨立伺服器域。客戶端應用程式在登入到伺服器之後,可以選擇一個虛擬主機。

主題:通常指釋出訊息;AMQP規範用一種或多種交換器來實現主題。

訊息代理:等同於伺服器。

===================================

  1. 儲存轉發(多個訊息傳送者,單個訊息接收者)。
  2. 分散式事務(多個訊息傳送者,多個訊息接收者)。
  3. 釋出訂閱(多個訊息傳送者,多個訊息接收者)。
  4. 基於內容的路由(多個訊息傳送者,多個訊息接收者)。
  5. 檔案傳輸佇列(多個訊息傳送者,多個訊息接收者)。
  6. 點對點連線(單個訊息傳送者,單個訊息接收者)。

===================================

rabbitmq的Log 在這裡:/var/log/rabbitmq