Broker
Name localhost
Version 5.16.0
ID ID:xxxxxxxxx-36082-1654522010467-0:1
Uptime 1 day 3 hours
Store percent used 0
Memory percent used 0
Temp percent used 0

Out of necessity I have a single consumer of a queue (work needs to be 
completed serially), but I need to have some messages processed before others, 
i.e., in priority order.

I have researched the documentation and my activmq.xml file contains:

  <broker xmlns="http://activemq.apache.org/schema/core";
          brokerName="localhost"
          dataDirectory="${activemq.data}">
    <destinationPolicy>
      <policyMap>
        <policyEntries>
          <policyEntry queue=">" prioritizedMessages="true" useCache="false" 
expireMessagesPeriod="0" queuePrefetch="1"/>
          <policyEntry topic=">" >
            <!--
                 The constantPendingMessageLimitStrategy is used to prevent
                 slow topic consumers to block producers and affect other 
consumers
                 by limiting the number of messages that are retained
                 For more information, see: 
http://activemq.apache.org/slow-consumer-handling.html
            -->
            <pendingMessageLimitStrategy>
              <constantPendingMessageLimitStrategy limit="1000"/>
            </pendingMessageLimitStrategy>
          </policyEntry>
        </policyEntries>
      </policyMap>
    </destinationPolicy>

If I run this Python code:

from json import dumps
from random import randint
from stomp import Connection


conn = Connection([("localhost", 61613)])
conn.connect()

for _ in range(25):
    priority = randint(1,9)
    conn.send("/queue/Priority Test",
              dumps({}),
              "application/json",
              headers={"persistent": "true",
                       "priority": priority})

The messages appear in the queue (and are therefore consumed from the queue) in 
the order they arrived, not priority order.

Of course, if I manually sort the messages using the web interface 
(http://localhost:8161/admin/browse.jsp?JMSDestination=Queue+Name<http://localhost:8161/admin/browse.jsp?JMSDestination=Queue+Name+>)
 the messages will be consumed in the desired order, but this is not a workable 
solution.

Am I missing somehing?
________________________________
The information contained in this e-mail and any attachments from COLSA 
Corporation may contain company sensitive and/or proprietary information, and 
is intended only for the named recipient to whom it was originally addressed. 
If you are not the intended recipient, any disclosure, distribution, or copying 
of this e-mail or its attachments is strictly prohibited. If you have received 
this e-mail in error, please notify the sender immediately by return e-mail and 
permanently delete the e-mail and any attachments.


COLSA Proprietary

Reply via email to