msg.setJMSPriority(9);
在此代码中,消息优先级设置为 9,表示这是一个高优先级消息。但是,发送消息时,消息的优先级为 4(正常优先级)。原因?与消息过期类似,JMS 提供者将查看消息的消息优先级属性,并在将消息放入队列之前调用 setJMSPriority 方法。由于默认消息优先级为 4(正常优先级),因此消息优先级不会像开发人员最初打算的那样设置为高优先级消息。
和消息过期一样,设置消息优先级的方法有两种:可以调用 MessageProducer(QueueSender 或 Topic Publisher)上的 setPriority() 方法,或者在发送消息时设置消息优先级:
//set the default message priority for all messages to 9 (high)
QueueSender qSender = qSession.createSender(requestQ);
qSender.setPriority(9);
qSender.send(msg1);
//this message is low priority
qSender.send(msg2, DeliveryMode.PERSISTENT, 1, 30000);
在本例中,msg1 将以 9(高优先级)的优先级发送,而 msg2 将以 1(低优先级)的优先级发送。