關於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規範用一種或多種交換器來實現主題。
訊息代理:等同於伺服器。
===================================
- 儲存轉發(多個訊息傳送者,單個訊息接收者)。
- 分散式事務(多個訊息傳送者,多個訊息接收者)。
- 釋出訂閱(多個訊息傳送者,多個訊息接收者)。
- 基於內容的路由(多個訊息傳送者,多個訊息接收者)。
- 檔案傳輸佇列(多個訊息傳送者,多個訊息接收者)。
- 點對點連線(單個訊息傳送者,單個訊息接收者)。
===================================
rabbitmq的Log 在這裡:/var/log/rabbitmq