Java Code Examples for org.apache.activemq.command.ActiveMQTextMessage#setMemoryUsage()

The following examples show how to use org.apache.activemq.command.ActiveMQTextMessage#setMemoryUsage() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: StoreQueueCursorNoDuplicateTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
public void testNoDuplicateAfterCacheFullAndReadPast() throws Exception {
   final PersistenceAdapter persistenceAdapter = brokerService.getPersistenceAdapter();
   final MessageStore queueMessageStore = persistenceAdapter.createQueueMessageStore(destination);
   final ConsumerInfo consumerInfo = new ConsumerInfo();
   final DestinationStatistics destinationStatistics = new DestinationStatistics();
   consumerInfo.setExclusive(true);

   final Queue queue = new Queue(brokerService, destination, queueMessageStore, destinationStatistics, null);

   queueMessageStore.start();
   queueMessageStore.registerIndexListener(null);

   QueueStorePrefetch underTest = new QueueStorePrefetch(queue, brokerService.getBroker());
   SystemUsage systemUsage = new SystemUsage();
   // ensure memory limit is reached
   systemUsage.getMemoryUsage().setLimit(messageBytesSize * (count + 2));
   underTest.setSystemUsage(systemUsage);
   underTest.setEnableAudit(false);
   underTest.start();
   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   final ConnectionContext contextNotInTx = new ConnectionContext();
   for (int i = 0; i < count; i++) {
      ActiveMQTextMessage msg = getMessage(i);
      msg.setMemoryUsage(systemUsage.getMemoryUsage());

      queueMessageStore.addMessage(contextNotInTx, msg);
      underTest.addMessageLast(msg);
   }

   assertTrue("cache is disabled as limit reached", !underTest.isCacheEnabled());
   int dequeueCount = 0;

   underTest.setMaxBatchSize(2);
   underTest.reset();
   while (underTest.hasNext() && dequeueCount < count) {
      MessageReference ref = underTest.next();
      ref.decrementReferenceCount();
      underTest.remove();
      LOG.info("Received message: {} with body: {}", ref.getMessageId(), ((ActiveMQTextMessage) ref.getMessage()).getText());
      assertEquals(dequeueCount++, ref.getMessageId().getProducerSequenceId());
   }
   underTest.release();
   assertEquals(count, dequeueCount);
}
 
Example 2
Source File: StoreQueueCursorOrderTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
@Test
public void tesBlockedFuture() throws Exception {
   final int count = 2;
   final Message[] messages = new Message[count];
   final TestMessageStore queueMessageStore = new TestMessageStore(messages, destination);
   final ConsumerInfo consumerInfo = new ConsumerInfo();
   final DestinationStatistics destinationStatistics = new DestinationStatistics();
   consumerInfo.setExclusive(true);

   final Queue queue = new Queue(brokerService, destination, queueMessageStore, destinationStatistics, null);

   queueMessageStore.start();
   queueMessageStore.registerIndexListener(null);

   QueueStorePrefetch underTest = new QueueStorePrefetch(queue, brokerService.getBroker());
   SystemUsage systemUsage = new SystemUsage();
   // ensure memory limit is reached
   systemUsage.getMemoryUsage().setLimit(messageBytesSize * 1);
   underTest.setSystemUsage(systemUsage);
   underTest.setEnableAudit(false);
   underTest.start();
   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   ActiveMQTextMessage msg = getMessage(0);
   messages[1] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.setRecievedByDFBridge(true);
   FutureTask<Long> future = new FutureTask<Long>(new Runnable() {
      @Override
      public void run() {
      }
   }, 2L) {
   };
   msg.getMessageId().setFutureOrSequenceLong(future);
   underTest.addMessageLast(msg);

   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   // second message will flip the cache but will be stored before the future task
   msg = getMessage(1);
   messages[0] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(1L);
   underTest.addMessageLast(msg);

   assertTrue("cache is disabled as limit reached", !underTest.isCacheEnabled());
   assertEquals("setBatch unset", 0L, queueMessageStore.batch.get());

   int dequeueCount = 0;

   underTest.setMaxBatchSize(2);
   underTest.reset();
   while (underTest.hasNext() && dequeueCount < count) {
      MessageReference ref = underTest.next();
      ref.decrementReferenceCount();
      underTest.remove();
      LOG.info("Received message: {} with body: {}", ref.getMessageId(), ((ActiveMQTextMessage) ref.getMessage()).getText());
      assertEquals(dequeueCount++, ref.getMessageId().getProducerSequenceId());
   }
   underTest.release();
   assertEquals(count, dequeueCount);
}
 
Example 3
Source File: StoreQueueCursorOrderTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
@Test
public void testNoSetBatchWithUnOrderedFutureCurrentSync() throws Exception {
   final int count = 2;
   final Message[] messages = new Message[count];
   final TestMessageStore queueMessageStore = new TestMessageStore(messages, destination);
   final ConsumerInfo consumerInfo = new ConsumerInfo();
   final DestinationStatistics destinationStatistics = new DestinationStatistics();
   consumerInfo.setExclusive(true);

   final Queue queue = new Queue(brokerService, destination, queueMessageStore, destinationStatistics, null);

   queueMessageStore.start();
   queueMessageStore.registerIndexListener(null);

   QueueStorePrefetch underTest = new QueueStorePrefetch(queue, brokerService.getBroker());
   SystemUsage systemUsage = new SystemUsage();
   // ensure memory limit is reached
   systemUsage.getMemoryUsage().setLimit(messageBytesSize * 1);
   underTest.setSystemUsage(systemUsage);
   underTest.setEnableAudit(false);
   underTest.start();
   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   ActiveMQTextMessage msg = getMessage(0);
   messages[1] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.setRecievedByDFBridge(true);
   final ActiveMQTextMessage msgRef = msg;
   FutureTask<Long> future = new FutureTask<Long>(new Runnable() {
      @Override
      public void run() {
         msgRef.getMessageId().setFutureOrSequenceLong(1L);
      }
   }, 1L) {
   };
   msg.getMessageId().setFutureOrSequenceLong(future);
   Executors.newSingleThreadExecutor().submit(future);
   underTest.addMessageLast(msg);

   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   // second message will flip the cache but will be stored before the future task
   msg = getMessage(1);
   messages[0] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(1L);
   underTest.addMessageLast(msg);

   assertTrue("cache is disabled as limit reached", !underTest.isCacheEnabled());
   assertEquals("setBatch unset", 0L, queueMessageStore.batch.get());

   int dequeueCount = 0;

   underTest.setMaxBatchSize(2);
   underTest.reset();
   while (underTest.hasNext() && dequeueCount < count) {
      MessageReference ref = underTest.next();
      ref.decrementReferenceCount();
      underTest.remove();
      LOG.info("Received message: {} with body: {}", ref.getMessageId(), ((ActiveMQTextMessage) ref.getMessage()).getText());
      assertEquals(dequeueCount++, ref.getMessageId().getProducerSequenceId());
   }
   underTest.release();
   assertEquals(count, dequeueCount);
}
 
Example 4
Source File: StoreQueueCursorOrderTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
@Test
public void testSetBatchWithOrderedFutureCurrentFuture() throws Exception {
   final int count = 2;
   final Message[] messages = new Message[count];
   final TestMessageStore queueMessageStore = new TestMessageStore(messages, destination);
   final ConsumerInfo consumerInfo = new ConsumerInfo();
   final DestinationStatistics destinationStatistics = new DestinationStatistics();
   consumerInfo.setExclusive(true);

   final Queue queue = new Queue(brokerService, destination, queueMessageStore, destinationStatistics, null);

   queueMessageStore.start();
   queueMessageStore.registerIndexListener(null);

   QueueStorePrefetch underTest = new QueueStorePrefetch(queue, brokerService.getBroker());
   SystemUsage systemUsage = new SystemUsage();
   // ensure memory limit is reached
   systemUsage.getMemoryUsage().setLimit(messageBytesSize * 1);
   underTest.setSystemUsage(systemUsage);
   underTest.setEnableAudit(false);
   underTest.start();
   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   ActiveMQTextMessage msg = getMessage(0);
   messages[0] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.setRecievedByDFBridge(true);
   final ActiveMQTextMessage msgRef = msg;
   FutureTask<Long> future = new FutureTask<Long>(new Runnable() {
      @Override
      public void run() {
         msgRef.getMessageId().setFutureOrSequenceLong(0L);
      }
   }, 0L) {
   };
   msg.getMessageId().setFutureOrSequenceLong(future);
   Executors.newSingleThreadExecutor().submit(future);
   underTest.addMessageLast(msg);

   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   // second message will flip the cache but will be stored before the future task
   msg = getMessage(1);
   messages[1] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.setRecievedByDFBridge(true);
   final ActiveMQTextMessage msgRe2f = msg;
   FutureTask<Long> future2 = new FutureTask<Long>(new Runnable() {
      @Override
      public void run() {
         msgRe2f.getMessageId().setFutureOrSequenceLong(1L);
      }
   }, 1L) {
   };
   msg.getMessageId().setFutureOrSequenceLong(future2);
   Executors.newSingleThreadExecutor().submit(future2);
   underTest.addMessageLast(msg);

   assertTrue("cache is disabled as limit reached", !underTest.isCacheEnabled());
   assertEquals("setBatch set", 1L, queueMessageStore.batch.get());

   int dequeueCount = 0;

   underTest.setMaxBatchSize(2);
   underTest.reset();
   while (underTest.hasNext() && dequeueCount < count) {
      MessageReference ref = underTest.next();
      ref.decrementReferenceCount();
      underTest.remove();
      LOG.info("Received message: {} with body: {}", ref.getMessageId(), ((ActiveMQTextMessage) ref.getMessage()).getText());
      assertEquals(dequeueCount++, ref.getMessageId().getProducerSequenceId());
   }
   underTest.release();
   assertEquals(count, dequeueCount);
}
 
Example 5
Source File: StoreQueueCursorOrderTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
@Test
public void testSetBatchWithFuture() throws Exception {
   final int count = 4;
   final Message[] messages = new Message[count];
   final TestMessageStore queueMessageStore = new TestMessageStore(messages, destination);
   final ConsumerInfo consumerInfo = new ConsumerInfo();
   final DestinationStatistics destinationStatistics = new DestinationStatistics();
   consumerInfo.setExclusive(true);

   final Queue queue = new Queue(brokerService, destination, queueMessageStore, destinationStatistics, null);

   queueMessageStore.start();
   queueMessageStore.registerIndexListener(null);

   QueueStorePrefetch underTest = new QueueStorePrefetch(queue, brokerService.getBroker());
   SystemUsage systemUsage = new SystemUsage();
   // ensure memory limit is reached
   systemUsage.getMemoryUsage().setLimit(messageBytesSize * (count + 6));
   underTest.setSystemUsage(systemUsage);
   underTest.setEnableAudit(false);
   underTest.start();
   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   ActiveMQTextMessage msg = getMessage(0);
   messages[0] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.setRecievedByDFBridge(true);
   final ActiveMQTextMessage msgRef = msg;
   FutureTask<Long> future0 = new FutureTask<Long>(new Runnable() {
      @Override
      public void run() {
         msgRef.getMessageId().setFutureOrSequenceLong(0L);
      }
   }, 0L) {
   };
   msg.getMessageId().setFutureOrSequenceLong(future0);
   underTest.addMessageLast(msg);
   Executors.newSingleThreadExecutor().submit(future0);

   msg = getMessage(1);
   messages[3] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.setRecievedByDFBridge(true);
   final ActiveMQTextMessage msgRef1 = msg;
   FutureTask<Long> future1 = new FutureTask<Long>(new Runnable() {
      @Override
      public void run() {
         msgRef1.getMessageId().setFutureOrSequenceLong(3L);
      }
   }, 3L) {
   };
   msg.getMessageId().setFutureOrSequenceLong(future1);
   underTest.addMessageLast(msg);

   msg = getMessage(2);
   messages[1] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(1L);
   underTest.addMessageLast(msg);

   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   // out of order future
   Executors.newSingleThreadExecutor().submit(future1);

   // sync add to flip cache
   msg = getMessage(3);
   messages[2] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(3L);
   underTest.addMessageLast(msg);

   assertTrue("cache is disabled as limit reached", !underTest.isCacheEnabled());
   assertEquals("setBatch set", 2L, queueMessageStore.batch.get());

   int dequeueCount = 0;

   underTest.setMaxBatchSize(count);
   underTest.reset();
   while (underTest.hasNext() && dequeueCount < count) {
      MessageReference ref = underTest.next();
      ref.decrementReferenceCount();
      underTest.remove();
      LOG.info("Received message: {} with body: {}", ref.getMessageId(), ((ActiveMQTextMessage) ref.getMessage()).getText());
      assertEquals(dequeueCount++, ref.getMessageId().getProducerSequenceId());
   }
   underTest.release();
   assertEquals(count, dequeueCount);
}
 
Example 6
Source File: StoreQueueCursorOrderTest.java    From activemq-artemis with Apache License 2.0 4 votes vote down vote up
@Test
public void testSetBatch() throws Exception {
   final int count = 3;
   final Message[] messages = new Message[count];
   final TestMessageStore queueMessageStore = new TestMessageStore(messages, destination);
   final ConsumerInfo consumerInfo = new ConsumerInfo();
   final DestinationStatistics destinationStatistics = new DestinationStatistics();
   consumerInfo.setExclusive(true);

   final Queue queue = new Queue(brokerService, destination, queueMessageStore, destinationStatistics, null);

   queueMessageStore.start();
   queueMessageStore.registerIndexListener(null);

   QueueStorePrefetch underTest = new QueueStorePrefetch(queue, brokerService.getBroker());
   SystemUsage systemUsage = new SystemUsage();
   // ensure memory limit is reached
   systemUsage.getMemoryUsage().setLimit(messageBytesSize * 5);
   underTest.setSystemUsage(systemUsage);
   underTest.setEnableAudit(false);
   underTest.start();
   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   ActiveMQTextMessage msg = getMessage(0);
   messages[0] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(0L);
   underTest.addMessageLast(msg);

   msg = getMessage(1);
   messages[1] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(1L);
   underTest.addMessageLast(msg);

   assertTrue("cache enabled", underTest.isUseCache() && underTest.isCacheEnabled());

   msg = getMessage(2);
   messages[2] = msg;
   msg.setMemoryUsage(systemUsage.getMemoryUsage());
   msg.getMessageId().setFutureOrSequenceLong(2L);
   underTest.addMessageLast(msg);

   assertTrue("cache is disabled as limit reached", !underTest.isCacheEnabled());
   assertEquals("setBatch set", 2L, queueMessageStore.batch.get());

   int dequeueCount = 0;

   underTest.setMaxBatchSize(2);
   underTest.reset();
   while (underTest.hasNext() && dequeueCount < count) {
      MessageReference ref = underTest.next();
      ref.decrementReferenceCount();
      underTest.remove();
      LOG.info("Received message: {} with body: {}", ref.getMessageId(), ((ActiveMQTextMessage) ref.getMessage()).getText());
      assertEquals(dequeueCount++, ref.getMessageId().getProducerSequenceId());
   }
   underTest.release();
   assertEquals(count, dequeueCount);
}