消費者優先權可讓您確保高優先權的消費者在啟用時接收訊息。
一般來說,連接到佇列的啟用消費者會以循環方式從該佇列接收訊息。當使用消費者優先權時,如果存在多個具有相同高優先權的啟用消費者,則會以循環方式傳遞訊息。
只有在高優先權消費者沒有可用的信用額度來消費訊息,或這些高優先權消費者拒絕接受訊息時(例如,因為它不符合與消費者相關聯的任何選擇器的條件),訊息才會傳送給低優先權消費者。
如果消費者未設定,則會使用預設優先權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 範圍內的整數。