I have attached the files to AMQ-122. I cleaned up the implementation a little bit before attaching
In summary I made the following changes 1) Added a useJmsPriority option to the Broker 2) Added the useJmsPriority parameter to the BrokerInfo class 3) Updated code which was creating BrokerInfo instances to set the useJmsPriority 4) Converted MessageDispatchChannel into an Interface 5) Created a new class FifoMessageDispatchChannel which implements MessageDispatchChannel and contains the same implementation as was previously in MessageDispatchChannel 6) Created a new class PriorityMessageDispatchChannel which contains the newly created PrioritizedMessageDispatchChannel. This implementation contains an array of priority linkedlists and a current index to the highest priority linkedlist. So messages are dequeued from the highest priority linked list with messages and enqueued to the linked list which corresponds to the priority in the message. 7) Created a MessageDispatchChannelFactory which returns the appropriate MessageDispatchChannel dependent upon the value of the useJmsPriority parameter 8) Updated ActiveMQConnection and ActiveMQSession to only override the message priority when useJmsPriority is false or the message priority is not set. 9) Added a new unit test JmsPriorityTest in order to test priority ordering Thanks, Phillip Merritt bsnyder wrote: > > On Wed, Apr 7, 2010 at 2:26 PM, pmmerritt1 <[email protected]> wrote: >> >> We had a need to use priority based queuing on a project I am working on >> and >> do not have enough time to wait on 6.0.0 to come out which is what >> AMQ-122 >> states as the release date, so I took a stab at implementing it. Since I >> am >> not too familiar with ActiveMQ I was hoping that one of the developers >> may >> be able to pick it up and incorporate into a 5.3 release if at all >> possible. >> I ran the unit tests and they seem to run with the exception of issues >> with >> the SSL but I do not believe that is related to the changes I made. >> >> Here is the summary of the changes, all source files are attached: >> 1) Created class PriorityMessageDispatchChannel which replaced >> MessageDispatchChannel >> 2) Updated ActiveMQMessageConsumer.java and ActiveMQSessionExecutor.java >> in >> order to instantiate the PriorityMessageDispatchChannel instead of the >> the >> MessageDispatchChannel. This would be best done at runtime based upon a >> configuration option such as supportsJMSPriority, however I did not want >> to >> make that significant of a change until I could figure out the >> feasibility >> of getting it incorporated into ActiveMQ. >> 3) Updated ActiveMQConnection.java and ActiveMQSession.java to only set >> the >> message priority to the defaultPriority if it wasn't set on the Message. >> 4) Added a unit test ChangeSentMessagePriorityTest.java >> >> I have attached all of the source files to this post, please let me know >> if >> it is possible to get this into a release and if so if I can do anything >> to >> help make that happen. >> >> Thanks, >> Phillip Merritt >> http://old.nabble.com/file/p28170545/ActiveMQConnection.java >> ActiveMQConnection.java >> http://old.nabble.com/file/p28170545/ActiveMQMessageConsumer.java >> ActiveMQMessageConsumer.java >> http://old.nabble.com/file/p28170545/ActiveMQSession.java >> ActiveMQSession.java >> http://old.nabble.com/file/p28170545/ActiveMQSessionExecutor.java >> ActiveMQSessionExecutor.java >> http://old.nabble.com/file/p28170545/ChangeSentMessagePriorityTest.java >> ChangeSentMessagePriorityTest.java >> http://old.nabble.com/file/p28170545/PriorityMessageDispatchChannel.java >> PriorityMessageDispatchChannel.java > > Please create a diff of your changes and attach it to the JIRA issue > as noted here: > > http://activemq.apache.org/contributing.html#Contributing-Submittingpatches > > Bruce > -- > perl -e 'print > unpack("u30","D0G)u8...@4vyy9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*" > );' > > ActiveMQ in Action: http://bit.ly/2je6cQ > Blog: http://bruceblog.org/ > Twitter: http://twitter.com/brucesnyder > > -- View this message in context: http://old.nabble.com/ActiveMQ-JMSPriority-%28AMQ-122%29-tp28170545p28195453.html Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.
