RabbitMQ高級特性之-優先級隊列(Priority Queue)

      網友投稿 932 2022-05-29

      背景

      RabbitMQ 自 V3.5.0 有優先級隊列實現。使用客戶端提供的可選參數可將任何隊列轉換為優先級(但與使用可選參數而不是策略的其他功能不同)。其實現支持有限數量的優先事項:255。但推薦值介于: 1 ~ 10。

      使用客戶端提供的可選參數

      要聲明優先級隊列,使用 x-max-priority 參數。此參數應為介于 1 和 255 之間的正整數,指示隊列應支持的最大優先級。例如

      Channel ch = ...; Map args = new HashMap(); args.put("x-max-priority", 10); ch.queueDeclare("my-priority-queue", true, false, false, args);

      1

      2

      3

      4

      然后,發布者可以使用basic.properties的priority字段發布優先級消息。數字越大,優先級越高。

      設計不支持使用策略的優先級聲明。

      行為

      AMQP 0-9-1 規范對于優先級預期如何工作有點模糊。它說,所有隊列必須支持至少 2 個優先級,并且可能最多支持 10 個優先級。但它沒定義如何處理沒有優先級屬性的消息。

      與 AMQP 0-9-1 規范不同,RabbitMQ 隊列默認情況下不支持優先級。創建優先級隊列時,開發人員可以選擇認為合適的最大優先級。在選擇值時,必須斟酌。

      每個隊列的優先級存在一些內存中和磁盤上的成本,還有額外的 CPU 成本,尤其是在使用時,因此可能不希望創建大量級別。

      消息優先級字段定義為未簽名的字節,因此實際上優先級應在 0 和 255 之間。

      沒有priority屬性的消息其優先級被視為 0。優先級高于隊列最大值的消息將被視為以最大優先級發布。

      優先級和資源使用的最大數量

      如果需要優先級隊列,推薦1 ~ 10。當前使用更多優先級將消耗更多的 CPU 資源,通過使用更多的 Erlang 進程。運行時調度也會受到影響。

      與消費者的交互

      了解使用者使用優先級隊列時的工作方式非常重要。默認情況下,消費者在確認任何消息之前可能會收到大量消息,但僅受網絡背壓限制。

      因此,如果這種饑餓的使用者連接到一個空隊列,然后將消息發布到該隊列中,則消息可能不會花費任何時間在隊列中等待。在這種情況下,優先級隊列將沒有機會優先處理它們。

      在大多數情況下,您需要在使用者的手動確認模式下使用 basic.qos 方法,以限制隨時可以發送的消息數,從而允許對郵件進行優先級排序。

      與其他功能的協作避坑

      RabbitMQ高級特性之-優先級隊列(Priority Queue)

      通常,優先級隊列具有標準RabbitMQ隊列的所有功能:支持持久性,分頁,鏡像等。開發人員應該注意幾個交互。

      應該過期的消息仍然只會從隊列的開頭過期。這意味著與普通隊列不同,即使每個隊列TTL也會導致過期的低優先級消息滯留在未過期的高優先級消息之后。這些消息將永遠不會傳遞,但是將出現在隊列統計信息中。

      設置了最大長度的隊列將照常從隊列的開頭丟棄消息以強制執行該限制。這意味著較高優先級的消息可能會被丟棄,以取代較低優先級的消息,這可能不是所期望的。

      為什么不支持策略定義

      為隊列定義可選參數的最方便方法是通過策略。建議使用策略配置TTL,隊列長度限制和其他可選隊列參數。

      但是,策略不能用于配置優先級,因為策略是動態的,可以在聲明隊列后進行更改。優先級隊列在聲明隊列后永遠無法更改其支持的優先級數量,因此使用策略不是一個安全的選擇。

      參考

      https://www.rabbitmq.com/priority.html

      https://www.rabbitmq.com/queues.html#optional-arguments

      RabbitMQ

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Python 爬蟲進階三之 Scrapy 框架安裝配置
      下一篇:ps命令使用詳解
      相關文章
      亚洲精品高清视频| 亚洲av无码专区在线播放| 中文字幕亚洲精品资源网| 亚洲精品自产拍在线观看| 久久精品国产精品亚洲| 亚洲伊人久久综合影院| 国产国拍亚洲精品福利 | 亚洲乱码无限2021芒果| 7777久久亚洲中文字幕蜜桃| 亚洲高清在线mv| 亚洲理论片在线观看| 亚洲春黄在线观看| 亚洲人成电影网站| 亚洲AV日韩综合一区尤物| 亚洲高清乱码午夜电影网| 亚洲AV无码AV日韩AV网站| 在线视频亚洲一区| 亚洲午夜无码AV毛片久久| 亚洲人成77777在线播放网站| 亚洲午夜国产精品无码老牛影视| 亚洲精品~无码抽插| 婷婷精品国产亚洲AV麻豆不片| 666精品国产精品亚洲| 亚洲欧洲日韩在线电影| 亚洲 日韩经典 中文字幕| 亚洲精品无码人妻无码| 亚洲成A人片在线观看无码3D| 国产精品亚洲αv天堂无码| 国产亚洲大尺度无码无码专线| 亚洲精品高清无码视频| 老色鬼久久亚洲AV综合| 亚洲免费福利视频| 亚洲成aⅴ人片久青草影院按摩| 亚洲国产91精品无码专区| 亚洲伊人久久大香线蕉综合图片| 亚洲AV无码专区国产乱码电影| 亚洲精品偷拍无码不卡av| 亚洲高清有码中文字| 日韩精品电影一区亚洲| 亚洲午夜久久久久久久久电影网| 亚洲欧洲日产国产综合网|