rabbitmq 的使用場景有哪些?
簡單的傳送與接收,沒有特別的處理
單傳送多接收
發布、訂閱模式,傳送端傳送廣播訊息,多個接收端接收
按路線傳送接收
按topics傳送接收
rabbitmq 有哪些重要的角色?
management、policymaker、monitorng、administrator
rabbitmq 有哪些重要的元件?
spring amqp
message
exchange
rabbitmq 中 vhost 的作用是什麼?
通過在各個例項間提供邏輯上分離,允許你為不同應用程式安全保密地執行資料
rabbitmq 的訊息是怎麼傳送的?
舉個例子,假如你想投遞一封郵件,你可以將郵件投遞到某個郵箱,然後郵遞員從郵箱中獲取郵件,並將郵件交付到接收方,在這個過程中,rabbitmq就 類似於郵箱 、郵局和郵遞員,rabbitmq是乙個訊息佇列,它可以接收程式傳送的訊息,然後放入到相應的訊息佇列中,另外一些程式可以從訊息佇列中獲取資料,以此完成程式之間的通訊
rabbitmq 怎麼保證訊息的穩定性?
1.publisher confirms(發布方確認)
2.message持久化
3.acknowledgement(consumer確認)
rabbitmq 怎麼避免訊息丟失?
將queue與message都設定為可持久化的(durable),這樣可以保證絕大部分情況下我們的rabbitmq訊息不會丟失。但依然解決不了小概率丟失事件的發生(比如rabbitmq伺服器已經接收到生產者的訊息,但還沒來得及持久化該訊息時rabbitmq伺服器就斷電了),如果我們需要對這種小概率事件也要管理起來,那麼我們要用到事務。
要保證訊息持久化成功的條件有哪些?
為了長時間的儲存和管理訊息,一般會使用資料庫。在activemq中預設使用的是derby db。當然也可更改配置來使用其他的db。
如果要使用不在上面列表中的db,可以通過配置sql語句和jdbc驅動來支援自己的db。broker在啟動的時候讀取配置檔案,若在配置檔案中指定了特定的jdbc驅動,則會在classpath路徑下自動檢測配置的jdbc驅動
rabbitmq 持久化有什麼特點?
訊息的可靠性是rabbitmq的一大特色,服務會把持久化的queue存放在硬碟上,當服務重啟的時候,會重新什麼之前被持久化的queue。佇列是可以被持久化,但是裡面的訊息是否為持久化那還要看訊息的持久化設定。也就是說,重啟之前那個queue裡面還沒有發出去的訊息的話,重啟之後那佇列裡面是不是還存在原來的訊息,這個就要取決於發生著在傳送訊息時對訊息的設定了。
如果要在重啟後保持訊息的持久化必須設定訊息是持久化的標識。
rabbitmq 有幾種廣播型別?
1.fanout廣播模式
2.direct廣播模式:能選擇性的傳送接收訊息,在終端執行並輸入引數
3.topic細緻的訊息過濾廣播模式
rabbitmq 怎麼實現延遲訊息佇列?
延遲任務通過訊息的ttl和dead letter exchange來實現。我們需要建立2個佇列,乙個用於傳送訊息,乙個用於訊息過期後的**目標佇列。
第一步,首先需要建立2個佇列。
第二步,實現訊息的producer。
第三步,實現訊息的consumer。
rabbitmq 集群有什麼用?
乙個rabbitmq集群中可以共享user,vhost,queue,exchange等,所有的資料和狀態都是必須在所有節點上覆制的,乙個例外是,那些當前只屬於建立它的節點的訊息佇列,儘管它們可見且可被所有節點讀取。rabbitmq節點可以動態的加入到集群中,乙個節點它可以加入到集群中,也可以從集群環集群會進行乙個基本的負載均衡。
rabbitmq 節點的型別有哪些?
記憶體節點、磁碟節點。顧名思義記憶體節點就是將所有資料放在記憶體,磁碟節點將資料放在磁碟
rabbitmq 集群搭建需要注意哪些問題?
每個節點cookie的同步;主機之間 必須可以相互識別並可達,/etc/hosts檔案配置必須準確
rabbitmq 每個節點是其他節點的完整拷貝嗎?為什麼?
不是,佇列的完整資訊只放在乙個節點,其他節點存放的是該佇列的指標
rabbitmq 集群中唯一乙個磁碟節點崩潰了會發生什麼情況?
如果唯一的磁碟節點崩潰,集群是可以保持執行的,但不能更改任何東西。
不能建立佇列
不能建立交換器
不能建立繫結
不能新增使用者
不能更改許可權
不能新增和刪除集群幾點
rabbitmq 對集群節點停止順序有要求嗎?
啟動順序:磁碟節點 => 記憶體節點
關閉順序:記憶體節點 => 磁碟節點
部分面試題
1.請程式設計遍歷頁面上所有textbox控制項並給它賦值為string.empty?答 foreach system.windows.forms.control control in this.controls 2.請程式設計實現乙個氣泡排序演算法?答 int array new int int ...
部分面試題
1.廣播變數和driver 中定義的普通變數的區別 2.資料傾斜 優化的方式,怎樣定位問題,有什麼樣的解決方案,有沒有調參的方式能夠解決的 3.模型 1 怎樣評判彙總層的資料模型的好壞 2 怎樣應對業務變化 3 分層的原則 4.實時流join怎麼做的,採用實時流相互等待借助外部快取join,如果資料...
部分面試題
get與post 通訊的區別 get 請求能快取,post 不能 post 相對 get 安全一點點,因為get 請求都包含在 url 裡,且會被瀏覽器儲存歷史紀錄,post 不會,但是在抓包的情況下都是一樣的。post 可以通過 request body來傳輸比 get 更多的資料,get 沒有這...