RabbitMQ 基礎概念

來源:互聯網
上載者:User

標籤:虛擬機器主機   品質   queue   時間   應該   儲存   基礎   tcp   交換   

Broker:訊息協商器。訊息佇列的實體,它在TCP/IP等連接埠上監聽AMQ訊息

 vHost:虛擬機器主機。功能上類似於web的虛擬機器主機,都是把資料按照功能或項目的不同劃分為不同的虛擬機器主機;使用者只被授予訪問虛擬機器主機的許可權,而沒有其他比這進階的存取控制措施。用戶端與Broker溝通需要先建立串連,這些串連僅限於串連使用者和虛擬機器主機。

 channel:通道。用戶端在串連中聲明一個通道,這個通道是客戶與Broker之間的一個邏輯串連;用戶端的操作都是通過通道來實現的。具體的操作需要用戶端聲明相應的組件。

   常用的組件:

    - 交換器(Exchange),它是發送訊息的實體;可以顯式命名

    - 隊列(Queue),這是接收訊息的實體;可以顯式命名;如果不命名,系統會自動產生一個隊列,名稱也為隨機的,隨機產生的隊列生命週期會在當次產生它的串連斷開時結束

    - 綁定器(Bind),將交換器和隊列串連起來,並且封裝訊息的路由資訊;綁定的交換器

 message:訊息

   訊息的組成:

    - 中繼資料,例如內容的編碼或者表明來源的欄位。

    - 標誌位,標記訊息投遞時候的一些保障機制。

    - 一個特殊的欄位叫做routing key。

exchange:交換器

  交換器負責把producer的訊息按指定的規則分配給queue

  規則有四種:

    - direct

    - topic

    - headers

    - fanout 群發,向所有綁定的queue

 queue:隊列

   broker儲存訊息的位置,他可以由producer和consumer任意一方建立。

temporary queue:暫存佇列

      聲明隊列時如果不指明隊列名稱,那麼聲明的隊列將是一個自動命名的隊列,這個隊列會在串連斷開時自動刪除,因為它屬於一次會話的專屬隊列,會話結束,它也就應該結束了。

 訊息從發送到接收的流程:

   訊息發送用戶端-create channel-》exchange-》queue-》-create channel -訊息接收用戶端 (接收端的接收流程還不確定)

   broker在發送訊息成功後會立即刪除掉儲存在queue中的該條訊息。如果設定了回執,broker會在收到回執後執行刪除。

 consumer關閉、broker服務關閉都會造成任務失敗和訊息丟失。

     - consumer異常: message acknowledgment。如果consumer發生異常訊息未收到的情況下,broker不會刪除掉該訊息,而是重新發送,直到收到consumer返回回執才會刪除。

    - broker異常: 對隊列和訊息進行持久化。

   - 隊列持久化:在隊列聲明中將持久化的參數設定為true即可使隊列持久化;這個設定必須在producer和consumer同時設定;另外,已聲明並存在隊列的屬性是不能修改,因此需要重新聲明一個新的隊列

   - 訊息持久化: 依據原始訊息資料,在執行個體化訊息對象時,傳入訊息持久化的參數

預設的這種持久化並不是非常的強壯,因為在broker接受訊息後有一小段時間內訊息是未儲存的。另外,rabbitmq不會對每條訊息執行fsync,因此訊息有可能是在記憶體的緩衝中,並未真正的寫到磁碟上。如果需要更妥當的持久化,需要用到事務Transaction 具體詳情:https://www.rabbitmq.com/confirms.html

round-robin dispatching:訊息輪詢分發

  如果有多個worker,borker會將訊息按照奇偶數輪流分發給worker;

Qos:服務品質

     訊息有的長,有短,如果一個worker分發到的訊息都很長,而一個worker分發到的都比較短,那麼一個worker會很繁忙,另一個會很閑。這樣就需要去平衡訊息的分發。

     設定qos :basic_qos(null, 1, null)。1代表的是broker一次只發送一條訊息給worker,如果worker沒有完成上一條發送的訊息、沒有給broker發送回執,那麼則不會繼續給這個worker發送下一條訊息,下一條的訊息會發送給一個閒置worker來處理。

 

(未完待續....)

RabbitMQ 基礎概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.