面試題 RabbitMQ部分

2021-10-23 14:39:21 字數 2329 閱讀 9572

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 沒有這...