@Override public int moveMessages(String filter, String otherQueue) throws Exception { return control.moveMessages(filter, otherQueue); }
@Override public int moveMessages(String filter, String otherQueue) throws Exception { return control.moveMessages(filter, otherQueue); }
@Override public int moveMessages(String filter, String otherQueue, boolean rejectDuplicates) throws Exception { return control.moveMessages(filter, otherQueue, rejectDuplicates); }
@Override public int moveMessages(String filter, String otherQueue, boolean rejectDuplicates) throws Exception { return control.moveMessages(filter, otherQueue, rejectDuplicates); }
/** * Moves all messages from one queue to another * * @param source name of source queue * @param target name of target queue * * @return number of messages moved */ public int moveMessages(String source, String target){ try { return getQueueControl(source).moveMessages("", target); } catch (Exception e) { throw new AsyncException(e); } }
/** * Moves all messages from one queue to another * * @param source name of source queue * @param target name of target queue * * @return number of messages moved */ public int moveMessages(String source, String target){ try { return getQueueControl(source).moveMessages("", target); } catch (Exception e) { throw new AsyncException(e); } }
/** * Moves a message from one queue to another * * @param jmsMessageId JMS message id of a message to move * @param source name of source queue * @param target name of target queue * * @return true if message moved */ public boolean moveMessage(String jmsMessageId, String source, String target){ try { //see: https://stackoverflow.com/questions/45871689/apache-artemis-how-to-move-jms-messages-to-a-different-queue/45883024 return getQueueControl(source).moveMessages("AMQUserID='" + jmsMessageId + "'", target) == 1; } catch (Exception e) { throw new AsyncException(e); } }
/** * Moves a message from one queue to another * * @param jmsMessageId JMS message id of a message to move * @param source name of source queue * @param target name of target queue * * @return true if message moved */ public boolean moveMessage(String jmsMessageId, String source, String target){ try { //see: https://stackoverflow.com/questions/45871689/apache-artemis-how-to-move-jms-messages-to-a-different-queue/45883024 return getQueueControl(source).moveMessages("AMQUserID='" + jmsMessageId + "'", target) == 1; } catch (Exception e) { throw new AsyncException(e); } }
queueControlA.moveMessages(null, queueB.toString()); Thread.sleep(500); Wait.assertEquals(0, () -> getMessageCount(queueControlA)); queueControlA.moveMessages(null, queueC.toString()); Wait.assertEquals(1, () -> getMessageCount(queueControlC)); Wait.assertEquals(0, () -> getMessageCount(queueControlA)); queueControlB.moveMessages(null, queueA.toString()); Wait.assertEquals(2, () -> getMessageCount(queueControlA)); Wait.assertEquals(0, () -> getMessageCount(queueControlB)); queueControlC.moveMessages(null, queueA.toString()); Wait.assertEquals(3, () -> getMessageCount(queueControlA)); Wait.assertEquals(0, () -> getMessageCount(queueControlC));
int movedMessagesCount = queueControl.moveMessages(null, otherQueue.toString()); Assert.assertEquals(1, movedMessagesCount); assertMessageMetrics(queueControl, 0, durable);
@Test public void testMoveMessagesToUnknownQueue() throws Exception { SimpleString address = RandomUtil.randomSimpleString(); SimpleString queue = RandomUtil.randomSimpleString(); SimpleString unknownQueue = RandomUtil.randomSimpleString(); session.createQueue(address, RoutingType.MULTICAST, queue, null, durable); ClientProducer producer = session.createProducer(address); // send on queue ClientMessage message = session.createMessage(durable); SimpleString key = RandomUtil.randomSimpleString(); long value = RandomUtil.randomLong(); message.putLongProperty(key, value); producer.send(message); QueueControl queueControl = createManagementControl(address, queue); assertMessageMetrics(queueControl, 1, durable); // moved all messages to unknown queue try { queueControl.moveMessages(null, unknownQueue.toString()); Assert.fail("operation must fail if the other queue does not exist"); } catch (Exception e) { } Assert.assertEquals(1, getMessageCount(queueControl)); assertMessageMetrics(queueControl, 1, durable); consumeMessages(1, session, queue); session.deleteQueue(queue); }
assertEquals(10, q1Control.moveMessages(null, "q2")); q2Control.moveMessages(null, "q1", false);
int movedMatchedMessagesCount = queueControl.moveMessages(key + " =" + matchingValue, otherQueue.toString()); Assert.assertEquals(1, movedMatchedMessagesCount); Assert.assertEquals(1, getMessageCount(queueControl));
assertEquals(NUMBER_OF_MSGS, q1Control.moveMessages(null, "q2"));