Package org.jboss.messaging.core.tx

Examples of org.jboss.messaging.core.tx.Transaction


      public void run()
      {
         try
         {
            Transaction tx = null;
           
            boolean handleTransactionally = message.isReliable() && isRecoverable();
           
            if (handleTransactionally)
            {
               tx = tr.createTransaction()
              
               //It will already have been persisted on the other node
               //so we need to set the persisted flag here
               message.setPersisted(true);
            }
           
            MessageReference ref = null;
              
            try
            {
               ref = ms.reference(message);
              
               Delivery delRet = handleInternal(null, ref, tx, true);

               if (delRet == null || !delRet.isSelectorAccepted())
               {
                  //This should never happen
                  throw new IllegalStateException("Queue did not accept reference!");
               }           
            }
            finally
            {
               if (ref != null)
               {
                  ref.releaseMemoryReference();
               }
            }
                      
            //Acknowledge on the remote queue stub
            Delivery del = new SimpleDelivery(remoteQueue, ref);
           
            del.acknowledge(tx);       
                       
            //For testing to simulate failures
            if (failBeforeCommit)
            {
               throw new Exception("Test failure before commit");
            }
              
            if (handleTransactionally)
            {
               tx.commit();
            }
           
            //For testing to simulate failures
            if (failAfterCommit)
            {
View Full Code Here


      MessageReference[] refs1 = new MessageReference[150];
     
      MessageReference[] refs2 = new MessageReference[150];
     
      //Send 50 refs to both channels
      Transaction tx = this.createXATx();
      for (int i = 0; i < 50; i++)
      {
         msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
        
         refs1[i] = ms.reference(msgs[i]);
               
         queue1.handle(null, refs1[i], tx);
        
         refs1[i].releaseMemoryReference();
        
         refs2[i] = ms.reference(msgs[i]);
        
         queue2.handle(null, refs2[i], tx);
        
         refs2[i].releaseMemoryReference();
      }
      tx.prepare();
      tx.commit();
     
      //Queue1
      List refIds = getPagedReferenceIds(queue1.getChannelID());
      assertEquals(0, refIds.size());
     
      refIds = getReferenceIdsOrderedByOrd(queue1.getChannelID());
      assertEquals(50, refIds.size());
                                   
      assertEquals(50, queue1.memoryRefCount());
     
      assertEquals(0, queue1.downCacheCount());
     
      assertFalse(queue1.isPaging());     
     
      assertEquals(0, queue1.getDeliveringCount());
     
      //Queue2
     
      refIds = getPagedReferenceIds(queue2.getChannelID());
      assertEquals(0, refIds.size());
     
      refIds = getReferenceIdsOrderedByOrd(queue2.getChannelID());
      assertEquals(50, refIds.size());
                             
      assertEquals(50, queue2.memoryRefCount());
     
      assertEquals(0, queue2.downCacheCount());
     
      assertTrue(queue2.isPaging());     
     
      assertEquals(0, queue2.getDeliveringCount());
           
      //Msgs
     
      assertEquals(50, ms.size());
     
      List msgIds = getMessageIds();
      assertEquals(50, msgIds.size());
     
      //Add 25 more
      tx = createXATx();
      for (int i = 50; i < 75; i++)
      {
         msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
        
         refs1[i] = ms.reference(msgs[i]);
               
         queue1.handle(null, refs1[i], tx);
        
         refs1[i].releaseMemoryReference();
        
         refs2[i] = ms.reference(msgs[i]);
        
         queue2.handle(null, refs2[i], tx);
        
         refs2[i].releaseMemoryReference();
      }
      tx.prepare();
      tx.commit();
     
      //Queue1
      refIds = getPagedReferenceIds(queue1.getChannelID());
             
      assertEquals(0, refIds.size());
     
      refIds = getReferenceIdsOrderedByOrd(queue1.getChannelID());
      assertEquals(75, refIds.size());
                                   
      assertEquals(75, queue1.memoryRefCount());
     
      assertEquals(0, queue1.downCacheCount());
     
      assertFalse(queue1.isPaging());     
     
      assertEquals(0, queue1.getDeliveringCount());
     
      //Queue2
     
      refIds = getPagedReferenceIds(queue2.getChannelID());
      assertEquals(25, refIds.size());
     
      refIds = getReferenceIdsOrderedByOrd(queue2.getChannelID());
      assertEquals(75, refIds.size());
                             
      assertEquals(50, queue2.memoryRefCount());
     
      assertEquals(0, queue2.downCacheCount());
     
      assertTrue(queue2.isPaging());     
     
      assertEquals(0, queue2.getDeliveringCount());
           
      //Msgs
     
      assertEquals(75, ms.size());
     
      msgIds = getMessageIds();
      assertEquals(75, msgIds.size());
     
     
     
      // Add 25 more
      tx = createXATx();
      for (int i = 75; i < 100; i++)
      {
         msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
        
         refs1[i] = ms.reference(msgs[i]);
               
         queue1.handle(null, refs1[i], tx);
        
         refs1[i].releaseMemoryReference();
        
         refs2[i] = ms.reference(msgs[i]);
        
         queue2.handle(null, refs2[i], tx);
        
         refs2[i].releaseMemoryReference();
      }
      tx.prepare();
      tx.commit();
     
      //Queue1
      refIds = getPagedReferenceIds(queue1.getChannelID());
               
      assertEquals(0, refIds.size());
     
      refIds = getReferenceIdsOrderedByOrd(queue1.getChannelID());
      assertEquals(100, refIds.size());
                                   
      assertEquals(100, queue1.memoryRefCount());
     
      assertEquals(0, queue1.downCacheCount());
     
      assertTrue(queue1.isPaging());     
     
      assertEquals(0, queue1.getDeliveringCount());
     
      //Queue2
     
      refIds = getPagedReferenceIds(queue2.getChannelID());
      assertEquals(50, refIds.size());
     
      refIds = getReferenceIdsOrderedByOrd(queue2.getChannelID());
      assertEquals(100, refIds.size());
                             
      assertEquals(50, queue2.memoryRefCount());
     
      assertEquals(0, queue2.downCacheCount());
     
      assertTrue(queue2.isPaging());     
     
      assertEquals(0, queue2.getDeliveringCount());
           
      //Msgs
     
      assertEquals(100, ms.size());
     
      msgIds = getMessageIds();
      assertEquals(100, msgIds.size());
     
     
      // Add 50 more
      tx = createXATx();
      for (int i = 100; i < 150; i++)
      {
         msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
        
         refs1[i] = ms.reference(msgs[i]);
               
         queue1.handle(null, refs1[i], tx);
        
         refs1[i].releaseMemoryReference();
        
         refs2[i] = ms.reference(msgs[i]);
        
         queue2.handle(null, refs2[i], tx);
        
         refs2[i].releaseMemoryReference();
      }
      tx.prepare();
      tx.commit();
     
      //Queue1
      refIds = getPagedReferenceIds(queue1.getChannelID());
               
      assertEquals(50, refIds.size());
View Full Code Here

      idm.start();
     
      TransactionRepository tr = new TransactionRepository(pm, new SimpleMessageStore(), idm);
      tr.start();
     
      Transaction tx = tr.createTransaction();
     
      ((SimpleDelivery)delivery).acknowledge(tx);
     
      assertTrue(delivery.isDone());
     
View Full Code Here

         queue3.add(receiver3);

         //This will make it fail after casting but before persisting the message in the db
         office1.setFail(true, false, false);

         Transaction tx = tr.createTransaction();

         final int NUM_MESSAGES = 10;

         for (int i = 0; i < NUM_MESSAGES; i++)
         {
            Message msg = CoreMessageFactory.createCoreMessage(i, true, null);

            MessageReference ref = ms.reference(msg);

            office1.route(ref, new SimpleCondition("topic1"), tx);
         }

         Thread.sleep(1000);

         List msgs = receiver1.getMessages();
         assertTrue(msgs.isEmpty());

         msgs = receiver2.getMessages();
         assertTrue(msgs.isEmpty());

         msgs = receiver3.getMessages();
         assertTrue(msgs.isEmpty());

         try
         {
            //An exception should be thrown           
            tx.commit();
            fail();
         }
         catch (TransactionException e)
         {
            //Ok
View Full Code Here

         queue3.add(receiver3);

         //This will make it fail after casting and persisting the message in the db
         office1.setFail(false, true, false);

         Transaction tx = tr.createTransaction();

         final int NUM_MESSAGES = 10;

         for (int i = 0; i < NUM_MESSAGES; i++)
         {
            Message msg = CoreMessageFactory.createCoreMessage(i, true, null);

            MessageReference ref = ms.reference(msg);

            office1.route(ref, new SimpleCondition("topic1"), tx);
         }

         Thread.sleep(1000);

         List msgs = receiver1.getMessages();
         assertTrue(msgs.isEmpty());

         msgs = receiver2.getMessages();
         assertTrue(msgs.isEmpty());

         msgs = receiver3.getMessages();
         assertTrue(msgs.isEmpty());

         try
         {
            //An exception should be thrown           
            tx.commit();
            fail();
         }
         catch (TransactionException e)
         {
            //Ok
View Full Code Here

      Message m2 = messages[1];
      Message m3 = messages[2];     
      Message m4 = messages[3];
      Message m5 = messages[4];

      Transaction tx = null;
      if (xa)
      {        
         tx = txRep.createTransaction(new MockXid());
      }
      else
      {
         tx = txRep.createTransaction();
      }
     
      if (xa)
      {
        assertEquals(1,txRep.getNumberOfRegisteredTransactions());
      }
      else
      {
        assertEquals(0,txRep.getNumberOfRegisteredTransactions());
      }
     
      MessageReference ref1 = ms.reference(m1);
      MessageReference ref2 = ms.reference(m2)
      MessageReference ref3 = ms.reference(m3);      
      MessageReference ref4 = ms.reference(m4);
      MessageReference ref5 = ms.reference(m5);

      log.debug("adding references non-transactionally");

      // Add first two refs non transactionally
      pm.addReference(channel.getChannelID(), ref1, null);
      pm.addReference(channel.getChannelID(), ref2, null);
     
      //check they're there
      List refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())));
     
      List msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));

      log.debug("ref1 and ref2 are there");

      //Add the next 3 refs transactionally
      pm.addReference(channel.getChannelID(), ref3, tx);
      pm.addReference(channel.getChannelID(), ref4, tx);
      pm.addReference(channel.getChannelID(), ref5, tx);
     
      //Remove the other 2 transactionally
      pm.removeReference(channel.getChannelID(), ref1, tx);
      pm.removeReference(channel.getChannelID(), ref2, tx);
     
      //Check the changes aren't visible
      refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())))
     
      msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));
     
      //commit transaction
      tx.commit();

      assertEquals("numberOfRegisteredTransactions",0,txRep.getNumberOfRegisteredTransactions());
     
      //check we can see only the last 3 refs
      refs = getReferenceIds(channel.getChannelID());
View Full Code Here

      Message m3 = messages[2];     
      Message m4 = messages[3];
      Message m5 = messages[4];

     
      Transaction tx = null;
      if (xa)
      {
         tx = txRep.createTransaction(new MockXid());
      }
      else
      {
         tx = txRep.createTransaction();
      }
     
      MessageReference ref1 = ms.reference(m1);
      MessageReference ref2 = ms.reference(m2)
      MessageReference ref3 = ms.reference(m3);      
      MessageReference ref4 = ms.reference(m4);
      MessageReference ref5 = ms.reference(m5)

      //Add first two refs non transactionally
      pm.addReference(channel.getChannelID(), ref1, null);
      pm.addReference(channel.getChannelID(), ref2, null);
     
      //check they're there
      List refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())));     
     
      List msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));
     
     
     
      //Add the next 3 refs transactionally
      pm.addReference(channel.getChannelID(), ref3, tx);
      pm.addReference(channel.getChannelID(), ref4, tx);
      pm.addReference(channel.getChannelID(), ref5, tx);
     
      //Remove the other 2 transactionally
      pm.removeReference(channel.getChannelID(), ref1, tx);
      pm.removeReference(channel.getChannelID(), ref2, tx);
     
      //Check the changes aren't visible
      refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())))
     
      msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));
     
      //rollback transaction
      tx.rollback();
     
      refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
View Full Code Here

         MessageReference ref1 = ms.reference(msg1);
        
         Message msg2 = CoreMessageFactory.createCoreMessage(2, persistentMessage, null);     
         MessageReference ref2 = ms.reference(msg2);
        
         Transaction tx = tr.createTransaction();
        
         boolean routed = postOffice.route(ref1, new SimpleCondition("topic1"), tx);           
         assertTrue(routed);
         routed = postOffice.route(ref2, new SimpleCondition("topic1"), tx);           
         assertTrue(routed);
              
         List msgs = queue1.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         msgs = queue2.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         tx.commit();
        
         msgs = receiver1.getMessages();
         assertNotNull(msgs);
         assertEquals(2, msgs.size());
         Message msgRec1 = (Message)msgs.get(0);
         Message msgRec2 = (Message)msgs.get(1);
         assertTrue(msgRec1 == msg1);
         assertTrue(msgRec2 == msg2);
        
         msgs = receiver2.getMessages();
         assertNotNull(msgs);
         assertEquals(2, msgs.size());
         msgRec1 = (Message)msgs.get(0);
         msgRec2 = (Message)msgs.get(1);
         assertTrue(msgRec1 == msg1);
         assertTrue(msgRec2 == msg2);
        
         //Acknowledge non transactionally
         receiver1.acknowledge(msgRec1, null);
         receiver1.acknowledge(msgRec2, null);
        
         receiver2.acknowledge(msgRec1, null);
         receiver2.acknowledge(msgRec2, null);
  
         msgs = queue1.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         receiver1.clear();
        
         msgs = queue2.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         receiver2.clear();
             
         Message msg3 = CoreMessageFactory.createCoreMessage(3, persistentMessage, null);     
         MessageReference ref3 = ms.reference(msg3);
        
         Message msg4 = CoreMessageFactory.createCoreMessage(4, persistentMessage, null);     
         MessageReference ref4 = ms.reference(msg4);
        
         tx = tr.createTransaction();
        
         routed = postOffice.route(ref3, new SimpleCondition("topic1"), tx);           
         assertTrue(routed);
         routed = postOffice.route(ref4, new SimpleCondition("topic1"), tx);           
         assertTrue(routed);
              
         msgs = queue1.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         msgs = queue2.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         tx.rollback();
        
         msgs = receiver1.getMessages();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         receiver1.clear();
        
         msgs = receiver2.getMessages();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         receiver2.clear();
        
        
         Message msg5 = CoreMessageFactory.createCoreMessage(5, persistentMessage, null);     
         MessageReference ref5 = ms.reference(msg5);
        
         Message msg6 = CoreMessageFactory.createCoreMessage(6, persistentMessage, null);     
         MessageReference ref6 = ms.reference(msg6);
              
         routed = postOffice.route(ref5, new SimpleCondition("topic1"), null);           
         assertTrue(routed);
         routed = postOffice.route(ref6, new SimpleCondition("topic1"), null);           
         assertTrue(routed);
        
         msgs = receiver1.getMessages();
         assertNotNull(msgs);
         assertEquals(2, msgs.size());
         msgRec1 = (Message)msgs.get(0);
         msgRec2 = (Message)msgs.get(1);
         assertTrue(msgRec1 == msg5);
         assertTrue(msgRec2 == msg6);
        
         msgs = receiver2.getMessages();
         assertNotNull(msgs);
         assertEquals(2, msgs.size());
         msgRec1 = (Message)msgs.get(0);
         msgRec2 = (Message)msgs.get(1);
         assertTrue(msgRec1 == msg5);
         assertTrue(msgRec2 == msg6);
        
         //Acknowledge transactionally
        
         tx = tr.createTransaction();
        
         receiver1.acknowledge(msgRec1, tx);
         receiver1.acknowledge(msgRec2, tx);
        
         receiver2.acknowledge(msgRec1, tx);
         receiver2.acknowledge(msgRec2, tx);
        
         int deliveringCount = queue1.getDeliveringCount();
         assertEquals(2, deliveringCount);
        
         deliveringCount = queue2.getDeliveringCount();
         assertEquals(2, deliveringCount);
        
         tx.commit();
        
         msgs = queue1.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
              
         receiver1.clear();
        
         msgs = queue2.browse();
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
              
         receiver2.clear();
        
         Message msg7 = CoreMessageFactory.createCoreMessage(7, persistentMessage, null);     
         MessageReference ref7 = ms.reference(msg7);
        
         Message msg8 = CoreMessageFactory.createCoreMessage(8, persistentMessage, null);     
         MessageReference ref8 = ms.reference(msg8);
              
         routed = postOffice.route(ref7, new SimpleCondition("topic1"), null);           
         assertTrue(routed);
         routed = postOffice.route(ref8, new SimpleCondition("topic1"), null);           
         assertTrue(routed);
        
         msgs = receiver1.getMessages();
         assertNotNull(msgs);
         assertEquals(2, msgs.size());
         msgRec1 = (Message)msgs.get(0);
         msgRec2 = (Message)msgs.get(1);
         assertTrue(msgRec1 == msg7);
         assertTrue(msgRec2 == msg8);
        
         msgs = receiver2.getMessages();
         assertNotNull(msgs);
         assertEquals(2, msgs.size());
         msgRec1 = (Message)msgs.get(0);
         msgRec2 = (Message)msgs.get(1);
         assertTrue(msgRec1 == msg7);
         assertTrue(msgRec2 == msg8);
        
         //Acknowledge transactionally
        
         tx = tr.createTransaction();
        
         receiver1.acknowledge(msgRec1, tx);
         receiver1.acknowledge(msgRec2, tx);
        
         receiver2.acknowledge(msgRec1, tx);
         receiver2.acknowledge(msgRec2, tx);
        
         deliveringCount = queue1.getDeliveringCount();
         assertEquals(2, deliveringCount);
        
         deliveringCount = queue2.getDeliveringCount();
         assertEquals(2, deliveringCount);
        
         tx.rollback();
        
         deliveringCount = queue1.getDeliveringCount();
         assertEquals(2, deliveringCount);                 
        
         receiver1.acknowledge(msgRec1, null);
View Full Code Here

         MessageReference ref1 = ms.reference(msg1);
        
         Message msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);;     
         MessageReference ref2 = ms.reference(msg2);
        
         Transaction tx = tr.createTransaction();

         boolean routed = office1.route(ref1, new SimpleCondition("topic1"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic1"), tx);        
         assertTrue(routed);

        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.commit();
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(1000);
        
         for (int i = 0; i < 8; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());           
            receivers[i].acknowledge(msgRec1, null);
            receivers[i].acknowledge(msgRec2, null);
            msgs = queues[i].browse();
            assertNotNull(msgs);           
            assertTrue(msgs.isEmpty());                       
            receivers[i].clear();
         }
        
         for (int i = 8; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);;     
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);;     
         ref2 = ms.reference(msg2);
        
         tx = tr.createTransaction();

         routed = office1.route(ref1, new SimpleCondition("topic1"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic1"), tx);        
         assertTrue(routed);
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(1000);        
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.rollback();
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         //Now send some non transactionally
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);
         ref2 = ms.reference(msg2);
        
         routed = office1.route(ref1, new SimpleCondition("topic1"), null);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic1"), null);        
         assertTrue(routed);
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(1000);        
        
         //And acknowledge transactionally
        
         tx = tr.createTransaction();
        
         for (int i = 0; i < 8; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());     
                       
            receivers[i].acknowledge(msgRec1, tx);
            receivers[i].acknowledge(msgRec2, tx);
            
            int deliveringCount = queues[i].getDeliveringCount();
           
            assertEquals(2, deliveringCount);
                      
            receivers[i].clear();
         }
        
         for (int i = 8; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.commit();
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
        
         // and the rollback
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);;     
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);;     
         ref2 = ms.reference(msg2);
        
         routed = office1.route(ref1, new SimpleCondition("topic1"), null);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic1"), null);        
         assertTrue(routed);
        
         Thread.sleep(1000);
                
         tx = tr.createTransaction();
        
         for (int i = 0; i < 8; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());     
                       
            receivers[i].acknowledge(msgRec1, tx);
            receivers[i].acknowledge(msgRec2, tx);
              
            int deliveringCount = queues[i].getDeliveringCount();
           
            assertEquals(2, deliveringCount);
           
         }
        
         for (int i = 8; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.rollback();
        
         for (int i = 0; i < 8; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());     
                                
            int deliveringCount = queues[i].getDeliveringCount();
           
            assertEquals(2, deliveringCount);
           
            receivers[i].acknowledge(msgRec1, null);
            receivers[i].acknowledge(msgRec2, null);
                          
            receivers[i].clear();
         }
        
         for (int i = 8; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
        
         // Now for topic 2
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);   
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);    
         ref2 = ms.reference(msg2);
        
         tx = tr.createTransaction();

         routed = office1.route(ref1, new SimpleCondition("topic2"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic2"), tx);        
         assertTrue(routed);
        
        
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.commit();
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(1000);
        
         for (int i = 0; i < 8; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         for (int i = 8; i < 16; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());           
            receivers[i].acknowledge(msgRec1, null);
            receivers[i].acknowledge(msgRec2, null);
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            receivers[i].clear();
         }
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);;     
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);;     
         ref2 = ms.reference(msg2);
        
         tx = tr.createTransaction();

         routed = office1.route(ref1, new SimpleCondition("topic1"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic1"), tx);        
         assertTrue(routed);
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.rollback();
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         //Now send some non transactionally
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);     
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);     
         ref2 = ms.reference(msg2);
        
         routed = office1.route(ref1, new SimpleCondition("topic2"), null);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic2"), null);        
         assertTrue(routed);
        
         Thread.sleep(1000);
        
         //And acknowledge transactionally
        
         tx = tr.createTransaction();
        
         for (int i = 0; i < 8; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         for (int i = 8; i < 16; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());     
                       
            receivers[i].acknowledge(msgRec1, tx);
            receivers[i].acknowledge(msgRec2, tx);
                       
            int deliveringCount = queues[i].getDeliveringCount();
           
            assertEquals(2, deliveringCount);
           
            receivers[i].clear();
         }
        
        
        
         tx.commit();
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
        
         // and the rollback
        
         msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);;     
         ref1 = ms.reference(msg1);
        
         msg2 = CoreMessageFactory.createCoreMessage(2, persistent, null);;     
         ref2 = ms.reference(msg2);
        
         routed = office1.route(ref1, new SimpleCondition("topic2"), null);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("topic2"), null);        
         assertTrue(routed);
        
         Thread.sleep(1000);
         
         tx = tr.createTransaction();
        
         for (int i = 0; i < 8; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         for (int i = 8; i < 16; i++)
         {        
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertEquals(2, msgs.size());
            Message msgRec1 = (Message)msgs.get(0);
            assertEquals(msg1.getMessageID(), msgRec1.getMessageID());
            Message msgRec2 = (Message)msgs.get(1);
            assertEquals(msg2.getMessageID(), msgRec2.getMessageID());     
           
           
            receivers[i].acknowledge(msgRec1, tx);
            receivers[i].acknowledge(msgRec2, tx);
           
           
            int deliveringCount = queues[i].getDeliveringCount();
           
            assertEquals(2, deliveringCount);
         }
        
        
        
         tx.rollback();
        
         for (int i = 0; i < 8; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
View Full Code Here

         assertTrue(delivery.isDone());
      }

      assertEqualSets(refs, r.getMessages());

      Transaction tx = tr.createTransaction();

      for(Iterator i = r.getMessages().iterator(); i.hasNext();)
      {
         Message ackm = (Message)i.next();
         // transacted acknowledgment
         r.acknowledge(ackm, tx);
      }

      tx.commit();

      assertTrue(queue.browse().isEmpty());
   }
View Full Code Here

TOP

Related Classes of org.jboss.messaging.core.tx.Transaction

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.