@Override public boolean changeMessagePriority(ModelNode id, int priority) throws Exception { return control.changeMessagePriority(id.asLong(), priority); }
@Override public boolean changeMessagePriority(ModelNode id, int priority) throws Exception { return control.changeMessagePriority(id.asLong(), priority); }
@Test public void testChangeMessagePriority() throws Exception { byte originalPriority = (byte) 1; byte newPriority = (byte) 8; SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); ClientProducer producer = session.createProducer(address); ClientMessage message = session.createMessage(durable); message.setPriority(originalPriority); producer.send(message); QueueControl queueControl = createManagementControl(address, queue); Wait.assertEquals(1, () -> getMessageCount(queueControl)); // the message IDs are set on the server Map<String, Object>[] messages = queueControl.listMessages(null); Assert.assertEquals(1, messages.length); long messageID = (Long) messages[0].get("messageID"); boolean priorityChanged = queueControl.changeMessagePriority(messageID, newPriority); Assert.assertTrue(priorityChanged); ClientConsumer consumer = session.createConsumer(queue); ClientMessage m = consumer.receive(500); Assert.assertNotNull(m); Assert.assertEquals(newPriority, m.getPriority()); consumer.close(); session.deleteQueue(queue); }
@Test public void testChangeMessagePriorityWithInvalidValue() throws Exception { byte invalidPriority = (byte) 23; SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); ClientProducer producer = session.createProducer(address); ClientMessage message = session.createMessage(durable); producer.send(message); QueueControl queueControl = createManagementControl(address, queue); Wait.assertEquals(1, () -> getMessageCount(queueControl)); // the message IDs are set on the server Map<String, Object>[] messages = queueControl.listMessages(null); Assert.assertEquals(1, messages.length); long messageID = (Long) messages[0].get("messageID"); try { queueControl.changeMessagePriority(messageID, invalidPriority); Assert.fail("operation fails when priority value is < 0 or > 9"); } catch (Exception e) { } ClientConsumer consumer = session.createConsumer(queue); ClientMessage m = consumer.receive(500); Assert.assertNotNull(m); Assert.assertTrue(invalidPriority != m.getPriority()); consumer.close(); session.deleteQueue(queue); }