Package org.hornetq.core.server

Examples of org.hornetq.core.server.HornetQServer


   }

   // The ClientConsumer should be able to also send ServerLargeMessages as that's done by the CoreBridge
   public void testSendServerMessage() throws Exception
   {
      HornetQServer server = createServer(true);

      server.start();

      ClientSessionFactory sf = locator.createSessionFactory();

      ClientSession session = sf.createSession(false, false);

      try
      {
         LargeServerMessageImpl fileMessage = new LargeServerMessageImpl((JournalStorageManager)server.getStorageManager());

         fileMessage.setMessageID(1005);

         for (int i = 0; i < LARGE_MESSAGE_SIZE; i++)
         {
            fileMessage.addBytes(new byte[] { UnitTestCase.getSamplebyte(i) });
         }

         // The server would be doing this
         fileMessage.putLongProperty(Message.HDR_LARGE_BODY_SIZE, LARGE_MESSAGE_SIZE);

         fileMessage.releaseResources();

         session.createQueue(LargeMessageTest.ADDRESS, LargeMessageTest.ADDRESS, true);

         ClientProducer prod = session.createProducer(LargeMessageTest.ADDRESS);

         prod.send(fileMessage);

         fileMessage.deleteFile();

         session.commit();

         session.start();

         ClientConsumer cons = session.createConsumer(LargeMessageTest.ADDRESS);

         ClientMessage msg = cons.receive(5000);

         Assert.assertNotNull(msg);

         Assert.assertEquals(msg.getBodySize(), LARGE_MESSAGE_SIZE);

         for (int i = 0; i < LARGE_MESSAGE_SIZE; i++)
         {
            Assert.assertEquals(UnitTestCase.getSamplebyte(i), msg.getBodyBuffer().readByte());
         }

         msg.acknowledge();

         session.commit();

      }
      finally
      {
         sf.close();
         server.stop();
      }
   }
View Full Code Here


    /**
     * {@inheritDoc}
     */
    @Override
    public synchronized HornetQServer getValue() throws IllegalStateException {
        final HornetQServer server = this.server;
        if (server == null) {
            throw new IllegalStateException();
        }
        return server;
    }
View Full Code Here

      params.put(TransportConstants.PORT_PROP_NAME, TransportConstants.DEFAULT_STOMP_PORT);
      params.put(TransportConstants.STOMP_CONSUMERS_CREDIT, "-1");
      TransportConfiguration stompTransport = new TransportConfiguration(NettyAcceptorFactory.class.getName(), params);
      config.getAcceptorConfigurations().add(stompTransport);
      config.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName()));
      HornetQServer hornetQServer = HornetQServers.newHornetQServer(config);

      JMSConfiguration jmsConfig = new JMSConfigurationImpl();
      jmsConfig.getQueueConfigurations()
               .add(new JMSQueueConfigurationImpl(getQueueName(), null, false, getQueueName()));
      jmsConfig.getTopicConfigurations().add(new TopicConfigurationImpl(getTopicName(), getTopicName()));
View Full Code Here

   // Public --------------------------------------------------------

   public void testExpiryMessagesThenDLQ() throws Exception
   {
      HornetQServer server = createServer(true);

      server.getConfiguration().setMessageExpiryScanPeriod(600000);

      AddressSettings setting = new AddressSettings();
      setting.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
      setting.setMaxDeliveryAttempts(5);
      setting.setMaxSizeBytes(50 * 1024);
      setting.setPageSizeBytes(10 * 1024);
      setting.setExpiryAddress(EXPIRY);
      setting.setDeadLetterAddress(DLQ);
      server.getAddressSettingsRepository().addMatch(MY_QUEUE.toString(), setting);

      setting.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
      setting.setMaxDeliveryAttempts(5);
      setting.setMaxSizeBytes(50 * 1024);
      setting.setPageSizeBytes(10 * 1024);
      setting.setDeadLetterAddress(DLQ);
      server.getAddressSettingsRepository().addMatch(EXPIRY.toString(), setting);

      server.start();

      try
      {

         server.createQueue(EXPIRY, EXPIRY, null, true, false);

         server.createQueue(DLQ, DLQ, null, true, false);

         server.createQueue(MY_QUEUE, MY_QUEUE, null, true, false);

         ServerLocator locator = createInVMNonHALocator();

         ClientSessionFactory sf = locator.createSessionFactory();

         ClientSession session = sf.createSession(true, true, 0);

         byte bufferSample[] = new byte[messageSize];

         for (int i = 0; i < bufferSample.length; i++)
         {
            bufferSample[i] = getSamplebyte(i);
         }

         ClientProducer producer = session.createProducer(MY_QUEUE);

         long timeToExpiry = System.currentTimeMillis() + 1000;
         for (int i = 0; i < numberOfMessages; i++)
         {
            ClientMessage message = session.createMessage(true);

            message.putIntProperty("count", i);

            // Send a few regular messages first, then all is just large messages
            if (i % 2 == 0)
            {
               message.putBooleanProperty("tst-large", false);
               message.getBodyBuffer().writeBytes(bufferSample);
            }
            else
            {
               message.putBooleanProperty("tst-large", true);
               message.setBodyInputStream(createFakeLargeStream(messageSize));
            }

            message.setExpiration(timeToExpiry);

            producer.send(message);
         }

         server.stop();
         server.start();

         sf = locator.createSessionFactory();

         session = sf.createSession(true, true, 0);

         Thread.sleep(1500);

         // just to try expiring
         ClientConsumer cons = session.createConsumer(MY_QUEUE);
         assertNull(cons.receive(1000));

         session.close();

         session = sf.createSession(false, false);

         cons = session.createConsumer(EXPIRY);
         session.start();

         // Consume half of the messages to make sure all the messages are paging (on the second try)
         for (int i = 0; i < numberOfMessages / 2; i++)
         {
            ClientMessage msg = cons.receive(5000);
            assertNotNull(msg);
            msg.acknowledge();
         }

         session.commit();

         cons.close();

         for (int rep = 0; rep < 6; rep++)
         {
            cons = session.createConsumer(EXPIRY);
            session.start();

            System.out.println("Trying " + rep);
            for (int i = 0; i < numberOfMessages / 2; i++)
            {
               ClientMessage message = cons.receive(5000);
               assertNotNull(message);

               if (i % 10 == 0)
               {
                  System.out.println("Received " + i);
               }

               for (int location = 0; location < messageSize; location++)
               {
                  assertEquals(getSamplebyte((long)location), message.getBodyBuffer().readByte());
               }
               message.acknowledge();
            }

            session.rollback();

            cons.close();

            session.close();
            sf.close();

            if (rep == 0)
            {
               // restart the server at the first try
               server.stop();
               server.start();
            }

            sf = locator.createSessionFactory();
            session = sf.createSession(false, false);
            session.start();
         }

         cons = session.createConsumer(EXPIRY);
         session.start();
         assertNull(cons.receiveImmediate());

         cons.close();

         session.close();
         sf.close();

         for (int rep = 0; rep < 2; rep++)
         {
            sf = locator.createSessionFactory();

            session = sf.createSession(false, false);

            cons = session.createConsumer(DLQ);

            session.start();

            for (int i = 0; i < numberOfMessages / 2; i++)
            {
               ClientMessage message = cons.receive(5000);
               assertNotNull(message);

               if (i % 10 == 0)
               {
                  System.out.println("Received " + i);
               }

               for (int location = 0; location < messageSize; location++)
               {
                  assertEquals(getSamplebyte((long)location), message.getBodyBuffer().readByte());
               }
               message.acknowledge();
            }
            if (rep == 0)
            {
               session.rollback();
               session.close();
               sf.close();
               server.stop();
               server.start();
            }
         }

         session.commit();

         assertNull(cons.receiveImmediate());

         session.close();
         sf.close();
         locator.close();

         validateNoFilesOnLargeDir();
      }
      finally
      {
         server.stop();
      }
   }
View Full Code Here

    * Tests if the system would still couple with old data where the LargeMessage was linked to its previous copy
    * @throws Exception
    */
   public void testCompatilityWithLinks() throws Exception
   {
      HornetQServer server = createServer(true);

      server.getConfiguration().setMessageExpiryScanPeriod(600000);

      AddressSettings setting = new AddressSettings();
      setting.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
      setting.setMaxDeliveryAttempts(5);
      setting.setMaxSizeBytes(-1);
      setting.setPageSizeBytes(10 * 1024);
      setting.setExpiryAddress(EXPIRY);
      setting.setDeadLetterAddress(DLQ);
      server.getAddressSettingsRepository().addMatch(MY_QUEUE.toString(), setting);

      setting.setAddressFullMessagePolicy(AddressFullMessagePolicy.PAGE);
      setting.setMaxDeliveryAttempts(5);
      setting.setMaxSizeBytes(-1);
      setting.setPageSizeBytes(10 * 1024);
      setting.setDeadLetterAddress(DLQ);
      server.getAddressSettingsRepository().addMatch(EXPIRY.toString(), setting);

      server.start();

      try
      {

         server.createQueue(EXPIRY, EXPIRY, null, true, false);

         server.createQueue(DLQ, DLQ, null, true, false);

         server.createQueue(MY_QUEUE, MY_QUEUE, null, true, false);

         ServerLocator locator = createInVMNonHALocator();

         ClientSessionFactory sf = locator.createSessionFactory();

         ClientSession session = sf.createSession(true, true, 0);

         byte bufferSample[] = new byte[messageSize];

         for (int i = 0; i < bufferSample.length; i++)
         {
            bufferSample[i] = getSamplebyte(i);
         }

         ClientProducer producer = session.createProducer(MY_QUEUE);

         long timeToExpiry = System.currentTimeMillis() + 1000;
         for (int i = 0; i < numberOfMessages; i++)
         {
            ClientMessage message = session.createMessage(true);

            message.putIntProperty("count", i);

            // Everything is going to be a large message
            message.putBooleanProperty("tst-large", true);
            message.setBodyInputStream(createFakeLargeStream(messageSize));

            message.setExpiration(timeToExpiry);

            producer.send(message);
         }

         server.stop();
         server.start();

         sf = locator.createSessionFactory();

         session = sf.createSession(true, true, 0);
         session.start();

         Thread.sleep(1500);

         ClientConsumer cons = session.createConsumer(MY_QUEUE);
         assertNull(cons.receive(1000));

         session.close();

         session = sf.createSession(false, false);

         cons = session.createConsumer(EXPIRY);
         session.start();

         ClientMessage msg = cons.receive(5000);
         assertNotNull(msg);
         msg.acknowledge();
         session.rollback();

         server.stop();

         // rename the file, simulating old behaviour
         long messageID = msg.getMessageID();
         long oldID = msg.getLongProperty(Message.HDR_ORIG_MESSAGE_ID);

         File largeMessagesFileDir = new File(getLargeMessagesDir());
         File oldFile = new File(largeMessagesFileDir, oldID + ".msg");
         File currentFile = new File(largeMessagesFileDir, messageID + ".msg");
         currentFile.renameTo(oldFile);

         server.start();

         sf = locator.createSessionFactory();

         session = sf.createSession(true, true, 0);
         session.start();

         cons = session.createConsumer(EXPIRY);

         for (int i = 0; i < numberOfMessages; i++)
         {
            ClientMessage message = cons.receive(5000);
            assertNotNull(message);

            if (i % 10 == 0)
            {
               System.out.println("Received " + i);
            }

            for (int location = 0; location < messageSize; location++)
            {
               assertEquals(getSamplebyte((long)location), message.getBodyBuffer().readByte());
            }
            message.acknowledge();
         }

         session.commit();

         session.close();
         sf.close();
         locator.close();
      }
      finally
      {
         server.stop();
      }
   }
View Full Code Here

      final int NUMBER_OF_BINDINGS = 100;

      int NUMBER_OF_MESSAGES = 2;

      HornetQServer server = createServer(true,
                                          config,
                                          PagingTest.PAGE_SIZE,
                                          PagingTest.PAGE_MAX,
                                          new HashMap<String, AddressSettings>());

      server.start();

      try
      {

         locator.setBlockOnNonDurableSend(true);
         locator.setBlockOnDurableSend(true);
         locator.setBlockOnAcknowledge(true);

         ClientSessionFactory sf = locator.createSessionFactory();
         ClientSession session = sf.createSession(null, null, false, !transacted, true, false, 0);

         for (int i = 0; i < NUMBER_OF_BINDINGS; i++)
         {
            session.createQueue(PagingTest.ADDRESS, new SimpleString("someQueue" + i), null, true);
         }

         ClientProducer producer = session.createProducer(PagingTest.ADDRESS);

         ClientMessage message = null;

         byte[] body = new byte[1024];

         message = session.createMessage(true);
         message.getBodyBuffer().writeBytes(body);

         for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
         {
            producer.send(message);

            if (transacted)
            {
               session.commit();
            }
         }

         session.close();

         server.stop();

         server = createServer(true,
                               config,
                               PagingTest.PAGE_SIZE,
                               PagingTest.PAGE_MAX,
                               new HashMap<String, AddressSettings>());
         server.start();

         sf = locator.createSessionFactory();

         session = sf.createSession(null, null, false, true, true, false, 0);

         session.start();

         for (int msg = 0; msg < NUMBER_OF_MESSAGES; msg++)
         {

            for (int i = 0; i < NUMBER_OF_BINDINGS; i++)
            {
               ClientConsumer consumer = session.createConsumer(new SimpleString("someQueue" + i));

               ClientMessage message2 = consumer.receive(PagingTest.RECEIVE_TIMEOUT);

               Assert.assertNotNull(message2);

               message2.acknowledge();

               Assert.assertNotNull(message2);

               consumer.close();

            }
         }

         session.close();

         for (int i = 0; i < NUMBER_OF_BINDINGS; i++)
         {
            Queue queue = (Queue)server.getPostOffice().getBinding(new SimpleString("someQueue" + i)).getBindable();

            Assert.assertEquals("Queue someQueue" + i + " was supposed to be empty", 0, queue.getMessageCount());
            Assert.assertEquals("Queue someQueue" + i + " was supposed to be empty", 0, queue.getDeliveringCount());
         }

      }
      finally
      {
         try
         {
            server.stop();
         }
         catch (Throwable ignored)
         {
         }
      }
View Full Code Here

   public void testSyncPage() throws Exception
   {
      Configuration config = createDefaultConfig();

      HornetQServer server = createServer(true,
                                          config,
                                          PagingTest.PAGE_SIZE,
                                          PagingTest.PAGE_MAX,
                                          new HashMap<String, AddressSettings>());

      server.start();

      try
      {
         server.createQueue(PagingTest.ADDRESS, PagingTest.ADDRESS, null, true, false);

         final CountDownLatch pageUp = new CountDownLatch(0);
         final CountDownLatch pageDone = new CountDownLatch(1);

         OperationContext ctx = new OperationContext()
         {

            public void onError(int errorCode, String errorMessage)
            {
            }

            public void done()
            {
            }

            public void storeLineUp()
            {
            }

            public boolean waitCompletion(long timeout) throws Exception
            {
               return false;
            }

            public void waitCompletion() throws Exception
            {

            }

            public void replicationLineUp()
            {

            }

            public void replicationDone()
            {

            }

            public void pageSyncLineUp()
            {
               pageUp.countDown();
            }

            public void pageSyncDone()
            {
               pageDone.countDown();
            }

            public void executeOnCompletion(IOAsyncTask runnable)
            {

            }
         };

         OperationContextImpl.setContext(ctx);

         PagingManager paging = server.getPagingManager();

         PagingStore store = paging.getPageStore(ADDRESS);

         store.sync();

         assertTrue(pageUp.await(10, TimeUnit.SECONDS));

         assertTrue(pageDone.await(10, TimeUnit.SECONDS));

         server.stop();

      }
      finally
      {
         try
         {
            server.stop();
         }
         catch (Throwable ignored)
         {
         }
View Full Code Here

   public void testSyncPageTX() throws Exception
   {
      Configuration config = createDefaultConfig();

      HornetQServer server = createServer(true,
                                          config,
                                          PagingTest.PAGE_SIZE,
                                          PagingTest.PAGE_MAX,
                                          new HashMap<String, AddressSettings>());

      server.start();

      try
      {
         server.createQueue(PagingTest.ADDRESS, PagingTest.ADDRESS, null, true, false);

         final CountDownLatch pageUp = new CountDownLatch(0);
         final CountDownLatch pageDone = new CountDownLatch(1);

         OperationContext ctx = new OperationContext()
         {

            public void onError(int errorCode, String errorMessage)
            {
            }

            public void done()
            {
            }

            public void storeLineUp()
            {
            }

            public boolean waitCompletion(long timeout) throws Exception
            {
               return false;
            }

            public void waitCompletion() throws Exception
            {

            }

            public void replicationLineUp()
            {

            }

            public void replicationDone()
            {

            }

            public void pageSyncLineUp()
            {
               pageUp.countDown();
            }

            public void pageSyncDone()
            {
               pageDone.countDown();
            }

            public void executeOnCompletion(IOAsyncTask runnable)
            {

            }
         };

         OperationContextImpl.setContext(ctx);

         PagingManager paging = server.getPagingManager();

         PagingStore store = paging.getPageStore(ADDRESS);

         store.sync();

         assertTrue(pageUp.await(10, TimeUnit.SECONDS));

         assertTrue(pageDone.await(10, TimeUnit.SECONDS));

         server.stop();

      }
      finally
      {
         try
         {
            server.stop();
         }
         catch (Throwable ignored)
         {
         }
      }
View Full Code Here

      pagedDestination.setPageSizeBytes(1024);
      pagedDestination.setMaxSizeBytes(10 * 1024);

      addresses.put(PAGED_ADDRESS.toString(), pagedDestination);

      HornetQServer server = createServer(true, configuration, -1, -1, addresses);

      try
      {
         server.start();

         ClientSessionFactory sf = locator.createSessionFactory();

         ClientSession session = sf.createSession(false, true, false);

         session.createQueue(PAGED_ADDRESS, PAGED_ADDRESS, true);

         session.createQueue(NON_PAGED_ADDRESS, NON_PAGED_ADDRESS, true);

         ClientProducer producerPaged = session.createProducer(PAGED_ADDRESS);
         ClientProducer producerNonPaged = session.createProducer(NON_PAGED_ADDRESS);

         int NUMBER_OF_MESSAGES = 100;

         for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
         {
            ClientMessage msg = session.createMessage(true);
            msg.getBodyBuffer().writeBytes(new byte[512]);

            producerPaged.send(msg);
            producerNonPaged.send(msg);
         }

         session.close();

         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS).isPaging());
         Assert.assertFalse(server.getPostOffice().getPagingManager().getPageStore(NON_PAGED_ADDRESS).isPaging());

         session = sf.createSession(false, true, false);

         session.start();

         ClientConsumer consumerNonPaged = session.createConsumer(NON_PAGED_ADDRESS);
         ClientConsumer consumerPaged = session.createConsumer(PAGED_ADDRESS);

         ClientMessage ackList[] = new ClientMessage[NUMBER_OF_MESSAGES];

         for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
         {
            ClientMessage msg = consumerNonPaged.receive(5000);
            Assert.assertNotNull(msg);
            ackList[i] = msg;
         }

         Assert.assertNull(consumerNonPaged.receiveImmediate());

         for (ClientMessage ack : ackList)
         {
            ack.acknowledge();
         }

         consumerNonPaged.close();

         session.commit();

         ackList = null;

         for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
         {
            ClientMessage msg = consumerPaged.receive(5000);
            Assert.assertNotNull(msg);
            msg.acknowledge();
            session.commit();
         }

         Assert.assertNull(consumerPaged.receiveImmediate());

         session.close();

      }
      finally
      {
         if (server.isStarted())
         {
            server.stop();
         }
      }
   }
View Full Code Here

      pagedDestinationB.setPageSizeBytes(2024);
      pagedDestinationB.setMaxSizeBytes(25 * 1024);

      addresses.put(PAGED_ADDRESS_B.toString(), pagedDestinationB);

      HornetQServer server = createServer(true, configuration, -1, -1, addresses);

      try
      {
         server.start();

         ClientSessionFactory sf = locator.createSessionFactory();

         ClientSession session = sf.createSession(false, true, false);

         session.createQueue(PAGED_ADDRESS_A, PAGED_ADDRESS_A, true);

         session.createQueue(PAGED_ADDRESS_B, PAGED_ADDRESS_B, true);

         ClientProducer producerA = session.createProducer(PAGED_ADDRESS_A);
         ClientProducer producerB = session.createProducer(PAGED_ADDRESS_B);

         int NUMBER_OF_MESSAGES = 100;

         for (int i = 0; i < NUMBER_MESSAGES_BEFORE_PAGING; i++)
         {
            ClientMessage msg = session.createMessage(true);
            msg.getBodyBuffer().writeBytes(new byte[512]);

            producerA.send(msg);
            producerB.send(msg);
         }

         session.commit(); // commit was called to clean the buffer only (making sure everything is on the server side)

         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_A).isPaging());
         Assert.assertFalse(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_B).isPaging());

         for (int i = 0; i < NUMBER_MESSAGES_BEFORE_PAGING; i++)
         {
            ClientMessage msg = session.createMessage(true);
            msg.getBodyBuffer().writeBytes(new byte[512]);

            producerA.send(msg);
            producerB.send(msg);
         }

         session.commit(); // commit was called to clean the buffer only (making sure everything is on the server side)

         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_A).isPaging());
         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_B).isPaging());

         for (int i = NUMBER_MESSAGES_BEFORE_PAGING * 2; i < NUMBER_OF_MESSAGES; i++)
         {
            ClientMessage msg = session.createMessage(true);
            msg.getBodyBuffer().writeBytes(new byte[512]);

            producerA.send(msg);
            producerB.send(msg);
         }

         session.close();

         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_A).isPaging());
         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_B).isPaging());

         session = sf.createSession(null, null, false, true, true, false, 0);

         session.start();

         ClientConsumer consumerA = session.createConsumer(PAGED_ADDRESS_A);

         ClientConsumer consumerB = session.createConsumer(PAGED_ADDRESS_B);

         for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
         {
            ClientMessage msg = consumerA.receive(5000);
            Assert.assertNotNull("Couldn't receive a message on consumerA, iteration = " + i, msg);
            msg.acknowledge();
         }

         Assert.assertNull(consumerA.receiveImmediate());

         consumerA.close();

         Assert.assertTrue(server.getPostOffice().getPagingManager().getPageStore(PAGED_ADDRESS_B).isPaging());

         for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
         {
            ClientMessage msg = consumerB.receive(5000);
            Assert.assertNotNull(msg);
            msg.acknowledge();
            session.commit();
         }

         Assert.assertNull(consumerB.receiveImmediate());

         consumerB.close();

         session.close();

      }
      finally
      {
         if (server.isStarted())
         {
            server.stop();
         }
      }
   }
View Full Code Here

TOP

Related Classes of org.hornetq.core.server.HornetQServer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.