javax.jms.Message#DEFAULT_PRIORITY = 4 normal priority == javax.jms.Message#DEFAULT_PRIORITY
low priority < javax.jms.Message#DEFAULT_PRIORITY high priority > javax.jms.Message#DEFAULT_PRIORITY On 25 August 2010 14:13, Kondro <wayne.robin...@gmail.com> wrote: > > If we can set the priority by using setJMSPriority to 0 - 9 for the > JDBCStore, how do we set the priority to low/normal/high for kahaDB? Are > these constants somewhere? > > > Gary Tully wrote: >> >> priority support needs to be enabled for a destination with a policy >> entry, prioritizedMessages >> see: http://activemq.apache.org/per-destination-policies.html >> The new (5.4) attributes are in red. >> >> To see the programatic setup check out the source of the one of the >> priority tests: >> http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/store/MessagePriorityTest.java?view=markup >> >> Note, with the kahaDB store, there are three levels of priority >> supported (low, normal, high). With the JDBCStore, the full >> complement, 0-9 are supported. >> >> On 20 August 2010 10:16, sonicBasher <sonicbas...@gmail.com> wrote: >>> >>> Hi, >>> >>> According to activeMQ website, the latest, 5.4 version supports message >>> priority handling: >>> http://activemq.apache.org/new-features-in-54.html >>> >>> What's more, according to this website >>> https://issues.apache.org/activemq/browse/AMQ-2790 >>> handling priorities takes place by calling the >>> setMessagePrioritySupported(true) on an ActiveMQConnectionFactory object. >>> Besides, it's the default setting anyways. >>> >>> Now, I tested this using the latest 5.4 version, but the messages don't >>> seem >>> to get ordered by the priority. >>> Here's how I do it (it's really straightforward): >>> >>> >>> -------------------------------------------------------- >>> PRODUCER CLASS: >>> >>> import java.util.LinkedList; >>> import java.util.List; >>> import javax.jms.Connection; >>> import javax.jms.JMSException; >>> import javax.jms.MapMessage; >>> import javax.jms.Queue; >>> import javax.jms.Session; >>> import org.apache.activemq.ActiveMQConnectionFactory; >>> import javax.jms.DeliveryMode; >>> >>> public final class Main { >>> >>> public static void main(String[] args) throws JMSException { >>> String brokerURL = "tcp://localhost:61616"; >>> String pendingQueueName = "pendingQ"; >>> String configID = "12350"; >>> int transactionID = 2; >>> final int repetitions = 10; >>> >>> ActiveMQConnectionFactory cf = new >>> ActiveMQConnectionFactory(brokerURL); >>> Connection connection = cf.createConnection(); >>> connection.start(); >>> Session session = connection.createSession(true, >>> Session.SESSION_TRANSACTED); >>> Queue queue = session.createQueue(pendingQueueName); >>> javax.jms.MessageProducer producer = >>> session.createProducer(queue); >>> >>> for (int i = 0; i < repetitions; i++) { >>> MapMessage mapMessage = session.createMapMessage(); >>> mapMessage.setStringProperty("configID", configID); >>> mapMessage.setIntProperty("transactionID", transactionID); >>> List<String> ls2 = new LinkedList<String>(); >>> ls2.add("abc" + i); >>> mapMessage.setObject("customerBeanList", ls2); >>> producer.send(mapMessage, DeliveryMode.PERSISTENT, i, 0); >>> } >>> session.commit(); >>> connection.stop(); >>> connection.close(); >>> } >>> } >>> >>> >>> -------------------------------------------------------- >>> CONSUMER CLASS: >>> >>> import java.util.LinkedList; >>> import java.util.List; >>> >>> >>> public class Main { >>> >>> public static void main(String[] args) { >>> AccountMessageListener aml = null; >>> String queueName = "pendingQ"; >>> String brokerURL = "tcp://localhost:61616"; >>> String configID = "12350"; >>> int transactionID = 2; >>> try { >>> List<String> completeListOfReceivedStrings = new >>> LinkedList<String>(); >>> List<String> tempReceivedStrings = null; >>> aml = new AccountMessageListener(brokerURL, queueName); >>> while ((tempReceivedStrings = aml.receiveMessage(configID, >>> transactionID, 0)) != null) { >>> completeListOfReceivedStrings.addAll(tempReceivedStrings); >>> } >>> aml.closeConnection(); >>> String[] arrayOfStrings = null; >>> if (completeListOfReceivedStrings != null) { >>> arrayOfStrings = new >>> String[completeListOfReceivedStrings.size()]; >>> for (int i = 0; i < completeListOfReceivedStrings.size(); >>> i++) { >>> arrayOfStrings[i] = >>> completeListOfReceivedStrings.get(i); >>> } >>> } >>> for (int i = 0; i < arrayOfStrings.length; i++) { >>> System.out.println(arrayOfStrings[i]); >>> } >>> } catch (Exception e) { >>> e.printStackTrace(); >>> aml.closeConnection(); >>> } >>> } >>> } >>> >>> >>> -------------------------------------------------------- >>> CONSUMER HELPER CLASS: >>> >>> import java.util.List; >>> import javax.jms.Connection; >>> import javax.jms.Destination; >>> import javax.jms.JMSException; >>> import javax.jms.MapMessage; >>> import javax.jms.MessageConsumer; >>> import javax.jms.Session; >>> import org.apache.activemq.ActiveMQConnectionFactory; >>> >>> public class AccountMessageListener { >>> >>> private ActiveMQConnectionFactory connectionFactory = null; >>> private Connection connection = null; >>> private Session session = null; >>> private Destination destination = null; >>> private String brokerURL = null; >>> private String queueName = null; >>> private MessageConsumer confirmConsumer = null; >>> >>> /** >>> * Constructor. >>> * @param brokerURL broker url >>> * @param queueName queue name >>> */ >>> public AccountMessageListener(String brokerURL, String queueName) { >>> try { >>> this.brokerURL = brokerURL; >>> this.queueName = queueName; >>> createConnection(); >>> session = connection.createSession(false, >>> Session.AUTO_ACKNOWLEDGE); >>> destination = session.createQueue(queueName); >>> } catch (JMSException e) { >>> e.printStackTrace(); >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> } >>> >>> /** >>> * Connects to message queue. >>> */ >>> private void createConnection() { >>> try { >>> connectionFactory = new ActiveMQConnectionFactory(brokerURL); >>> connectionFactory.setMessagePrioritySupported(true); >>> connection = connectionFactory.createConnection(); >>> connection.start(); >>> } catch (JMSException e) { >>> closeConnection(); >>> e.printStackTrace(); >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> } >>> >>> /** >>> * Receives message from queue. >>> * @param configID config id >>> * @param transactionID transaction id >>> * @return message >>> */ >>> public List<String> receiveMessage(String configID, int transactionID) >>> { >>> try { >>> String messageSelector = "configID = '" + configID + "' AND >>> transactionID = " + transactionID; >>> confirmConsumer = session.createConsumer(destination, >>> messageSelector); >>> MapMessage mapMessage = null; >>> List<String> ls = null; >>> mapMessage = (MapMessage) confirmConsumer.receive(250); >>> if (mapMessage != null) { >>> if (mapMessage.getObject("customerBeanList") != null && >>> mapMessage.getObject("customerBeanList") instanceof List) { >>> ls = (List<String>) >>> mapMessage.getObject("customerBeanList"); >>> } >>> } >>> confirmConsumer.close(); >>> return ls; >>> } catch (JMSException ex) { >>> ex.printStackTrace(); >>> closeConnection(); >>> return null; >>> } catch (Exception e) { >>> e.printStackTrace(); >>> closeConnection(); >>> return null; >>> } >>> } >>> >>> /** >>> * Closes connection. >>> */ >>> public void closeConnection() { >>> try { >>> session.close(); >>> connection.close(); >>> >>> } catch (Exception e) { >>> e.printStackTrace(); >>> } >>> } >>> >>> /** >>> * Queue name getter. >>> * @return queue name >>> */ >>> public String getQueueName() { >>> return queueName; >>> } >>> } >>> >>> ---------------------------------------------------------------- >>> >>> Obviously I use ActiveMQ 5.4 on localhost as a message broker. I'll be >>> grateful for any hints. >>> Regards >>> >>> >>> >>> -- >>> View this message in context: >>> http://old.nabble.com/Method-setMessagePrioritySupported%28true%29-called-on-ActiveMQConnectionFactory-doesn%27t-work-tp29490144p29490144.html >>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>> >>> >> >> >> >> -- >> http://blog.garytully.com >> >> Open Source Integration >> http://fusesource.com >> >> > > -- > View this message in context: > http://old.nabble.com/Method-setMessagePrioritySupported%28true%29-called-on-ActiveMQConnectionFactory-doesn%27t-work-tp29490144p29532113.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > -- http://blog.garytully.com Open Source Integration http://fusesource.com