消費者優先權可讓您確保高優先權的消費者在啟用時接收訊息。

一般來說,連接到佇列的啟用消費者會以循環方式從該佇列接收訊息。當使用消費者優先權時,如果存在多個具有相同高優先權的啟用消費者,則會以循環方式傳遞訊息。

只有在高優先權消費者沒有可用的信用額度來消費訊息,或這些高優先權消費者拒絕接受訊息時(例如,因為它不符合與消費者相關聯的任何選擇器的條件),訊息才會傳送給低優先權消費者。

如果消費者未設定,則會使用預設優先權0

1. 核心

1.1. JMS 範例

當使用 JMS 用戶端時,您可以在建立消費者使用的目的地時,使用位址參數來設定要使用的優先權。

Queue queue = session.createQueue("my.destination.name?consumer-priority=50");
Topic topic = session.createTopic("my.destination.name?consumer-priority=50");

consumer = session.createConsumer(queue);

優先權值的範圍是 -231 到 231-1。

2. OpenWire

2.1. JMS 範例

消費者的優先權是使用目的地選項設定的,如下所示:

queue = new ActiveMQQueue("TEST.QUEUE?consumer.priority=10");
consumer = session.createConsumer(queue);

由於 OpenWire 的限制,優先權值的範圍是:0 到 127。最高優先權是 127。

3. AMQP

在 AMQP 1.0 中,消費者的優先權是在 attach 框架的屬性映射中設定的,其中連結的 broker 端表示連結的傳送端。

條目的鍵必須是字串文字 "priority",而條目的值必須是 -231 到 231-1 範圍內的整數。