Package org.jboss.messaging.core.contract

Examples of org.jboss.messaging.core.contract.PostOffice


     this.routeWithNonClusteredQueues(true);
   }
  
   public void testStartTxInternally() throws Throwable
   {
     PostOffice office1 = null;

     try
     {  
       office1 = createClusteredPostOffice(1);

       Queue queue1 =  new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queue1.activate();
       boolean added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queue1, false), false);
       assertTrue(added);
      
       Queue queue2 =  new MessagingQueue(1, "queue2", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queue2.activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queue2, false), false);
       assertTrue(added);
      
       Queue queue3 =  new MessagingQueue(1, "queue3", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queue3.activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queue3, false), false);
       assertTrue(added);
      
       Queue queue4 =  new MessagingQueue(1, "queue4", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queue4.activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queue4, false), false);
       assertTrue(added);

       SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue1.getLocalDistributor().add(receiver1);

       SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue2.getLocalDistributor().add(receiver2);

       SimpleReceiver receiver3 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue3.getLocalDistributor().add(receiver3);
      
       SimpleReceiver receiver4 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue4.getLocalDistributor().add(receiver4);

       Message msg1 = CoreMessageFactory.createCoreMessage(1, true, null);     
       MessageReference ref1 = ms.reference(msg1)
       boolean routed = office1.route(ref1, new SimpleCondition("condition1"), null);  
       assertTrue(routed);

       Message msg2 = CoreMessageFactory.createCoreMessage(2, true, null);     
       MessageReference ref2 = ms.reference(msg2);        
       routed = office1.route(ref2, new SimpleCondition("condition1"), null);     
       assertTrue(routed);

       Message msg3 = CoreMessageFactory.createCoreMessage(3, true, null);     
       MessageReference ref3 = ms.reference(msg3);        
       routed = office1.route(ref3, new SimpleCondition("condition1"), null);     
       assertTrue(routed);

       Thread.sleep(3000);
      
       List msgs = receiver1.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       Message msgRec1 = (Message)msgs.get(0);
       assertTrue(msg1 == msgRec1);
       Message msgRec2 = (Message)msgs.get(1);
       assertTrue(msg2 == msgRec2);
       Message msgRec3 = (Message)msgs.get(2);
       assertTrue(msg3 == msgRec3);

       receiver1.acknowledge(msgRec1, null);
       receiver1.acknowledge(msgRec2, null);
       receiver1.acknowledge(msgRec3, null);
       msgs = queue1.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());
      
       msgs = receiver2.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       msgRec1 = (Message)msgs.get(0);
       assertTrue(msg1 == msgRec1);
       msgRec2 = (Message)msgs.get(1);
       assertTrue(msg2 == msgRec2);
       msgRec3 = (Message)msgs.get(2);
       assertTrue(msg3 == msgRec3);

       receiver2.acknowledge(msgRec1, null);
       receiver2.acknowledge(msgRec2, null);
       receiver2.acknowledge(msgRec3, null);
       msgs = queue2.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());

       msgs = receiver3.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       msgRec1 = (Message)msgs.get(0);
       assertTrue(msg1 == msgRec1);
       msgRec2 = (Message)msgs.get(1);
       assertTrue(msg2 == msgRec2);
       msgRec3 = (Message)msgs.get(2);
       assertTrue(msg3 == msgRec3);

       receiver3.acknowledge(msgRec1, null);
       receiver3.acknowledge(msgRec2, null);
       receiver3.acknowledge(msgRec3, null);
       msgs = queue3.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());
      
       msgs = receiver4.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       msgRec1 = (Message)msgs.get(0);
       assertTrue(msg1 == msgRec1);
       msgRec2 = (Message)msgs.get(1);
       assertTrue(msg2 == msgRec2);
       msgRec3 = (Message)msgs.get(2);
       assertTrue(msg3 == msgRec3);

       receiver4.acknowledge(msgRec1, null);
       receiver4.acknowledge(msgRec2, null);
       receiver4.acknowledge(msgRec3, null);
       msgs = queue4.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());       
     }
     finally
     {
       if (office1 != null)
       {
            office1.removeBinding("queue1", true);
            office1.removeBinding("queue2", true);
            office1.removeBinding("queue3", true);
            office1.removeBinding("queue4", true);
            office1.stop();
       }
     }
   }
View Full Code Here


     }
   }
   public void testBindSameName() throws Throwable
   {
      PostOffice office1 = null;
     
      PostOffice office2 = null;
         
      try
      {  
         office1 = createClusteredPostOffice(1);
        
         office2 = createClusteredPostOffice(2);
        
         Queue queue1 = new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queue1.activate();
        
         Condition condition1 = new SimpleCondition("queue1");
        
         boolean added = office1.addBinding(new Binding(condition1, queue1, false), false);
         assertTrue(added);

         Queue queue2 = new MessagingQueue(2, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queue2.activate();

         added = office2.addBinding(new Binding(condition1, queue2, false), false);
         assertTrue(added);

         Queue queue3 = new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queue3.activate();
        
         added = office1.addBinding(new Binding(condition1, queue3, false), false);        
         assertFalse(added);

         Queue queue4 =  new MessagingQueue(2, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queue4.activate();
        
         added = office2.addBinding(new Binding(condition1, queue4, false), false);
         assertFalse(added);
        
         Binding removed = office1.removeBinding("does not exist", false);
         assertNull(removed);
        
         removed = office1.removeBinding(queue1.getName(), false);
         assertNotNull(removed);

         removed = office2.removeBinding(queue2.getName(), false);               
         assertNotNull(removed);                 
      }
      finally
      {
         if (office1 != null)
         {           
            office1.stop();
         }
        
         if (office2 != null)
         {
            office2.stop();
         }
      }
   }
View Full Code Here

   // Private --------------------------------------------------------------------------------------

   private void clusteredTransactionalRoute(boolean persistent) throws Throwable
   {
      PostOffice office1 = null;
     
      PostOffice office2 = null;
     
      try
      {  
         //Start two offices
        
         office1 = createClusteredPostOffice(1);
         office2 = createClusteredPostOffice(2);
    
         Queue[] queues = new Queue[16];
        
         //condition1

         queues[0] = new MessagingQueue(1, "sub1", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[0].activate();
         boolean added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[0], false), false);
         assertTrue(added);
        
         queues[1] = new MessagingQueue(1, "sub2", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[1].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[1], false), false);
         assertTrue(added);
        
         queues[2] = new MessagingQueue(2, "sub3", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[2].activate();
         added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queues[2], false), false);
         assertTrue(added);
        
         queues[3] = new MessagingQueue(2, "sub4", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[3].activate();
         added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queues[3], false), false);
         assertTrue(added);
        
         queues[4] = new MessagingQueue(2, "sub5", channelIDManager.getID(), ms, pm, true, -1, null, true);
         queues[4].activate();
         added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queues[4], false), false);
         assertTrue(added);
        
         queues[5] = new MessagingQueue(1, "sub6", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[5].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[5], false), false);
         assertTrue(added);
        
         queues[6] = new MessagingQueue(1, "sub7", channelIDManager.getID(), ms, pm, true, -1, null, true);
         queues[6].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[6], false), false);
         assertTrue(added);
        
         queues[7] = new MessagingQueue(1, "sub8", channelIDManager.getID(), ms, pm, true, -1, null, true);
         queues[7].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[7], false), false);
         assertTrue(added);
        
         //condition2
        
         queues[8] = new MessagingQueue(1, "sub9", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[8].activate();
         added= office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[8], false), false);
         assertTrue(added);
        
         queues[9] = new MessagingQueue(1, "sub10", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[9].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[9], false), false);
         assertTrue(added);
        
         queues[10] = new MessagingQueue(2, "sub11", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[10].activate();
         added = office2.addBinding(new Binding(new SimpleCondition("condition2"), queues[10], false), false);
         assertTrue(added);
        
         queues[11] = new MessagingQueue(2, "sub12", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[11].activate();
         added = office2.addBinding(new Binding(new SimpleCondition("condition2"), queues[11], false), false);
         assertTrue(added);
        
         queues[12] = new MessagingQueue(2, "sub13", channelIDManager.getID(), ms, pm, true, -1, null, true);
         queues[12].activate();
         added = office2.addBinding(new Binding(new SimpleCondition("condition2"), queues[12], false), false);
         assertTrue(added);
        
         queues[13] = new MessagingQueue(1, "sub14", channelIDManager.getID(), ms, pm, false, -1, null, true);
         queues[13].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[13], false), false);
         assertTrue(added);
        
         queues[14] = new MessagingQueue(1, "sub15", channelIDManager.getID(), ms, pm, true, -1, null, true);
         queues[14].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[14], false), false);
         assertTrue(added);
        
         queues[15] = new MessagingQueue(1, "sub16", channelIDManager.getID(), ms, pm, true, -1, null, true);
         queues[15].activate();
         added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[15], false), false);
         assertTrue(added);

         SimpleReceiver[] receivers = new SimpleReceiver[16];
        
         for (int i = 0; i < 16; i++)
         {
            receivers[i] = new SimpleReceiver("blah" + i, SimpleReceiver.ACCEPTING);
            queues[i].getLocalDistributor().add(receivers[i]);
         }
        
         //First for topic 1
        
         Message msg1 = CoreMessageFactory.createCoreMessage(1, persistent, null);;     
         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("condition1"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("condition1"), tx);        
         assertTrue(routed);
        
         for (int i = 0; i < 16; i++)
         {
           log.info("i is " + i);
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse(null);
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         log.info("committing");
         tx.commit();
         log.info("committed");
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(3000);
        
         for (int i = 0; i < 16; i++)
         {
           if (i >= 8 || (queues[i].getNodeID() == 2 && queues[i].isRecoverable()))
           {    
             //Shouldn't get message
             List msgs = receivers[i].getMessages();
             assertNotNull(msgs);
             assertTrue(msgs.isEmpty());
             msgs = queues[i].browse(null);
             assertNotNull(msgs);
             assertTrue(msgs.isEmpty());
           }
           else
           {
             //Should get message
             log.info("is is " + i);
             log.info("trying with receiver " + receivers[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(null);
             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("condition1"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("condition1"), tx);        
         assertTrue(routed);
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(3000);        
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse(null);
            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(null);
            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 = office2.route(ref1, new SimpleCondition("condition2"), tx);        
         assertTrue(routed);
         routed = office2.route(ref2, new SimpleCondition("condition2"), tx);        
         assertTrue(routed);
                          
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse(null);
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }
        
         tx.commit();
        
         //Messages are sent asych so may take some finite time to arrive
         Thread.sleep(3000);
        
         for (int i = 8; i < 16; i++)
         {
           if (i < 8 || (queues[i].getNodeID() == 1 && queues[i].isRecoverable()))
          {    
             //  Shouldn't get message
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse(null);
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
          }
          else
          {
            // Should get message
            log.info("is is " + i);
            log.info("trying with receiver " + receivers[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(null);
            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("condition1"), tx);        
         assertTrue(routed);
         routed = office1.route(ref2, new SimpleCondition("condition1"), tx);        
         assertTrue(routed);
        
         for (int i = 0; i < 16; i++)
         {
            List msgs = receivers[i].getMessages();
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
            msgs = queues[i].browse(null);
            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(null);
            assertNotNull(msgs);
            assertTrue(msgs.isEmpty());
         }        
      }
      finally
      {
         if (office1 != null)
         {
            try
            {
               office1.removeBinding("sub7", false);
               office1.removeBinding("sub8", false);          
               office1.removeBinding("sub15", false);
               office1.removeBinding("sub16", false);
            }
            catch (Exception ignore)
            {
               ignore.printStackTrace();
            }
                       
            office1.stop();
         }
        
         if (office2 != null)
         {
            try
            {
               office2.removeBinding("sub5", false);
               office2.removeBinding("sub13", false);
            }
            catch (Exception ignore)
            {
               ignore.printStackTrace();
            }
           
            office2.stop();
         }
      }
   }
View Full Code Here

      }
   }
  
   private void clusteredRouteWithFilter(boolean persistentMessage) throws Throwable
   {
     PostOffice office1 = null;

     PostOffice office2 = null;

     try
     {  
       office1 = createClusteredPostOffice(1);
       office2 = createClusteredPostOffice(2);

       SimpleFilter filter1 = new SimpleFilter(2);
       SimpleFilter filter2 = new SimpleFilter(3);

       Queue queue1 =  new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, filter1, true);
       queue1.activate();
       boolean added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queue1, false), false);
       assertTrue(added);

       Queue queue2 = new MessagingQueue(2, "queue2", channelIDManager.getID(), ms, pm, false, -1, filter2, true);
       queue2.activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queue2, false), false);
       assertTrue(added);

       Queue queue3 = new MessagingQueue(2, "queue3", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queue3.activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queue3, false), false);
       assertTrue(added);

       SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue1.getLocalDistributor().add(receiver1);

       SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue2.getLocalDistributor().add(receiver2);

       SimpleReceiver receiver3 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue3.getLocalDistributor().add(receiver3);

       Message msg1 = CoreMessageFactory.createCoreMessage(1, persistentMessage, null);     
       MessageReference ref1 = ms.reference(msg1)
       boolean routed = office1.route(ref1, new SimpleCondition("condition1"), null);  
       assertTrue(routed);


       Message msg2 = CoreMessageFactory.createCoreMessage(2, persistentMessage, null);     
       MessageReference ref2 = ms.reference(msg2);        
       routed = office1.route(ref2, new SimpleCondition("condition1"), null);     
       assertTrue(routed);

       Message msg3 = CoreMessageFactory.createCoreMessage(3, persistentMessage, null);     
       MessageReference ref3 = ms.reference(msg3);        
       routed = office1.route(ref3, new SimpleCondition("condition1"), null);     
       assertTrue(routed);

       Thread.sleep(3000);

       List msgs = receiver1.getMessages();
       assertNotNull(msgs);
       assertEquals(1, msgs.size());
       Message msgRec = (Message)msgs.get(0);
       assertEquals(msg2, msgRec);
       receiver1.acknowledge(msgRec, null);
       msgs = queue1.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty())

       msgs = receiver2.getMessages();
       assertNotNull(msgs);
       assertEquals(1, msgs.size());
       msgRec = (Message)msgs.get(0);
       assertEquals(msg3, msgRec);
       receiver2.acknowledge(msgRec, null);
       msgs = queue2.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty())

       msgs = receiver3.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       Message msgRec1 = (Message)msgs.get(0);
       assertEquals(msg1, msgRec1);
       Message msgRec2 = (Message)msgs.get(1);
       assertEquals(msg2, msgRec2);
       Message msgRec3 = (Message)msgs.get(2);
       assertEquals(msg3, msgRec3);

       receiver3.acknowledge(msgRec1, null);
       receiver3.acknowledge(msgRec2, null);
       receiver3.acknowledge(msgRec3, null);
       msgs = queue3.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());
     }
     finally
     {
       if (office1 != null)
       {
         office1.stop();
       }

       if (office2 != null)
       {
         office2.stop();
       }

     }
   }
View Full Code Here

     }
   }
  
   private void clusteredRouteFourNodes(boolean persistentMessage) throws Throwable
   {
     PostOffice office1 = null;

     PostOffice office2 = null;
    
     PostOffice office3 = null;

     PostOffice office4 = null;

     try
     {  
       office1 = createClusteredPostOffice(1);
       office2 = createClusteredPostOffice(2);
       office3 = createClusteredPostOffice(3);
       office4 = createClusteredPostOffice(4);

       Queue queue1 =  new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queue1.activate();
       boolean added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queue1, false), false);
       assertTrue(added);
      
       Queue queue2 =  new MessagingQueue(2, "queue2", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queue2.activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queue2, false), false);
       assertTrue(added);
      
       Queue queue3 =  new MessagingQueue(3, "queue3", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queue3.activate();
       added = office3.addBinding(new Binding(new SimpleCondition("condition1"), queue3, false), false);
       assertTrue(added);
      
       Queue queue4 =  new MessagingQueue(4, "queue4", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queue4.activate();
       added = office4.addBinding(new Binding(new SimpleCondition("condition1"), queue4, false), false);
       assertTrue(added);

       SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue1.getLocalDistributor().add(receiver1);

       SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue2.getLocalDistributor().add(receiver2);

       SimpleReceiver receiver3 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue3.getLocalDistributor().add(receiver3);
      
       SimpleReceiver receiver4 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue4.getLocalDistributor().add(receiver4);

       Message msg1 = CoreMessageFactory.createCoreMessage(1, persistentMessage, null);     
       MessageReference ref1 = ms.reference(msg1)
       boolean routed = office1.route(ref1, new SimpleCondition("condition1"), null);  
       assertTrue(routed);

       Message msg2 = CoreMessageFactory.createCoreMessage(2, persistentMessage, null);     
       MessageReference ref2 = ms.reference(msg2);        
       routed = office1.route(ref2, new SimpleCondition("condition1"), null);     
       assertTrue(routed);

       Message msg3 = CoreMessageFactory.createCoreMessage(3, persistentMessage, null);     
       MessageReference ref3 = ms.reference(msg3);        
       routed = office1.route(ref3, new SimpleCondition("condition1"), null);     
       assertTrue(routed);

       Thread.sleep(3000);
      
       List msgs = receiver1.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       Message msgRec1 = (Message)msgs.get(0);
       assertEquals(msg1,  msgRec1);
       Message msgRec2 = (Message)msgs.get(1);
       assertEquals(msg2, msgRec2);
       Message msgRec3 = (Message)msgs.get(2);
       assertEquals(msg3, msgRec3);

       receiver1.acknowledge(msgRec1, null);
       receiver1.acknowledge(msgRec2, null);
       receiver1.acknowledge(msgRec3, null);
       msgs = queue1.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());
      
       msgs = receiver2.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       msgRec1 = (Message)msgs.get(0);
       assertEquals(msg1, msgRec1);
       msgRec2 = (Message)msgs.get(1);
       assertEquals(msg2, msgRec2);
       msgRec3 = (Message)msgs.get(2);
       assertEquals(msg3, msgRec3);

       receiver2.acknowledge(msgRec1, null);
       receiver2.acknowledge(msgRec2, null);
       receiver2.acknowledge(msgRec3, null);
       msgs = queue2.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());

       msgs = receiver3.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       msgRec1 = (Message)msgs.get(0);
       assertEquals(msg1, msgRec1);
       msgRec2 = (Message)msgs.get(1);
       assertEquals(msg2, msgRec2);
       msgRec3 = (Message)msgs.get(2);
       assertEquals(msg3, msgRec3);

       receiver3.acknowledge(msgRec1, null);
       receiver3.acknowledge(msgRec2, null);
       receiver3.acknowledge(msgRec3, null);
       msgs = queue3.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());
      
       msgs = receiver4.getMessages();
       assertNotNull(msgs);
       assertEquals(3, msgs.size());
       msgRec1 = (Message)msgs.get(0);
       assertEquals(msg1, msgRec1);
       msgRec2 = (Message)msgs.get(1);
       assertEquals(msg2, msgRec2);
       msgRec3 = (Message)msgs.get(2);
       assertEquals(msg3, msgRec3);

       receiver4.acknowledge(msgRec1, null);
       receiver4.acknowledge(msgRec2, null);
       receiver4.acknowledge(msgRec3, null);
       msgs = queue4.browse(null);
       assertNotNull(msgs);
       assertTrue(msgs.isEmpty());
     }
     finally
     {
       if (office1 != null)
       {
         office1.stop();
       }

       if (office2 != null)
       {
         office2.stop();
       }
      
       if (office3 != null)
       {
         office3.stop();
       }

       if (office4 != null)
       {
         office4.stop();
       }

     }
   }
View Full Code Here

  
  

   private void clusteredRoute(boolean persistentMessage) throws Throwable
   {
     PostOffice office1 = null;

     PostOffice office2 = null;

     try
     {  
       office1 = createClusteredPostOffice(1);
       office2 = createClusteredPostOffice(2);

       //A mixture of durable and non durable queues

       Queue[] queues = new Queue[16];

       //condition1

       queues[0] = new MessagingQueue(1, "sub1", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[0].activate();
       boolean added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[0], false), false);
       assertTrue(added);

       queues[1] = new MessagingQueue(1, "sub2", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[1].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[1], false), false);
       assertTrue(added);

       queues[2] = new MessagingQueue(2, "sub3", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[2].activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queues[2], false), false);
       assertTrue(added);

       queues[3] = new MessagingQueue(2, "sub4", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[3].activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queues[3], false), false);
       assertTrue(added);

       //durable

       queues[4] = new MessagingQueue(2, "sub5", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queues[4].activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition1"), queues[4], false), false);
       assertTrue(added);

       queues[5] = new MessagingQueue(1, "sub6", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[5].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[5], false), false);
       assertTrue(added);

       //durable

       queues[6] = new MessagingQueue(1, "sub7", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queues[6].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[6], false), false);
       assertTrue(added);

       //durable

       queues[7] = new MessagingQueue(1, "sub8", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queues[7].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition1"), queues[7], false), false);
       assertTrue(added);

       //condition2


       queues[8] = new MessagingQueue(1, "sub9", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[8].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[8], false), false);
       assertTrue(added);

       queues[9] = new MessagingQueue(1, "sub10", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[9].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[9], false), false);
       assertTrue(added);

       queues[10] = new MessagingQueue(2, "sub11", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[10].activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition2"), queues[10], false), false);
       assertTrue(added);

       queues[11] = new MessagingQueue(2, "sub12", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[11].activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition2"), queues[11], false), false);
       assertTrue(added);

       //durable

       queues[12] = new MessagingQueue(2, "sub13", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queues[12].activate();
       added = office2.addBinding(new Binding(new SimpleCondition("condition2"), queues[12], false), false);
       assertTrue(added);

       queues[13] = new MessagingQueue(1, "sub14", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queues[13].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[13], false), false);
       assertTrue(added);

       //durable

       queues[14] = new MessagingQueue(1, "sub15", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queues[14].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[14], false), false);
       assertTrue(added);

       queues[15] = new MessagingQueue(1, "sub16", channelIDManager.getID(), ms, pm, true, -1, null, true);
       queues[15].activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queues[15], false), false);
       assertTrue(added);

       SimpleReceiver[] receivers = new SimpleReceiver[16];

       for (int i = 0; i < 16; i++)
       {
         receivers[i] = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
         queues[i].getLocalDistributor().add(receivers[i]);
       }

       Message msg = CoreMessageFactory.createCoreMessage(1, persistentMessage, null);     
       MessageReference ref = ms.reference(msg);        

       boolean routed = office1.route(ref, new SimpleCondition("condition1"), null);        
       assertTrue(routed);

       //Messages are sent asych so may take some finite time to arrive
       Thread.sleep(3000);

       //Durable queues on remote node should never get the message

       for (int i = 0; i < 16; i++)
       {
         if (i >= 8 || (queues[i].getNodeID() == 2 && queues[i].isRecoverable()))
         {
           this.checkNotGetsMessage(queues[i], receivers[i]);
         }
         else
         {
           //Should get the message
           this.checkGetsMessage(queues[i], receivers[i], msg);
         }

       }

       //Now route to condition2

       msg = CoreMessageFactory.createCoreMessage(2, persistentMessage, null);;     
       ref = ms.reference(msg);        

       routed = office2.route(ref, new SimpleCondition("condition2"), null);        
       assertTrue(routed);
       //Messages are sent asych so may take some finite time to arrive
       Thread.sleep(3000);

       for (int i = 0; i < 16; i++)
       {
         if (i < 8 || (queues[i].getNodeID() == 1 && queues[i].isRecoverable()))
         {
           //Shouldn't get the message
           this.checkNotGetsMessage(queues[i], receivers[i]);
         }
         else
         {
           //Should get the message
           this.checkGetsMessage(queues[i], receivers[i], msg);
         }

       }
     }
     finally
     {
       if (office1 != null)
       {
         try
         {             
           office1.removeBinding("sub7", false);
           office1.removeBinding("sub8", false);              
           office1.removeBinding("sub15", false);
           office1.removeBinding("sub16", false);
         }
         catch (Exception ignore)
         {
           ignore.printStackTrace();
         }

         office1.stop();
       }

       if (office2 != null)
       {
         try
         {
           office2.removeBinding("sub5", false);
           office2.removeBinding("sub13", false);
         }
         catch (Exception ignore)
         {    
           ignore.printStackTrace();
         }
         office2.stop();
       }

     }
   }
View Full Code Here

   {
      super.startService();
     
      try
      {
         PostOffice po = serverPeer.getPostOfficeInstance();
               
         // We deploy any queues corresponding to pre-existing durable subscriptions

         Collection queues = po.getQueuesForCondition(new JMSCondition(false, destination.getName()), true);
       
         Iterator iter = queues.iterator();

         while (iter.hasNext())
         {
            Queue queue = (Queue)iter.next();
           
            //See http://jira.jboss.org/jira/browse/JBMESSAGING-1742
            if (po.isClustered())
            {
               if (destination.isClustered() != queue.isClustered())
               {
                  log.warn("Topic " + destination.getName()
                           + " previous clustered attribute is " + queue.isClustered()
                           + ". Now re-deploying it with clustered attribute: " + destination.isClustered());
                 
                  queue = po.convertDestination(destination, queue.getName());
               }
            }
                    
            //TODO We need to set the paging params this way since the post office doesn't store them
            //instead we should never create queues inside the postoffice - only do it at deploy time
View Full Code Here

         //from memory
        
         //First we remove any data for a non durable sub - a non durable sub might have data in the
         //database since it might have paged
        
         PostOffice po = serverPeer.getPostOfficeInstance();
                 
         Collection queues = serverPeer.getPostOfficeInstance().getQueuesForCondition(new JMSCondition(false, destination.getName()), true);
       
         Iterator iter = queues.iterator();
        
         while (iter.hasNext())           
         {
            Queue queue = (Queue)iter.next();
           
            if (!queue.isRecoverable())
            {
               // Unbind
               po.removeBinding(queue.getName(), false);
            }
                       
            queue.deactivate();
           
            queue.unload();
View Full Code Here

    * @throws Exception if the post office can't be reached.
    */
   private void setMaxSizeForQueues() throws Exception
   {
      Condition cond = new JMSCondition(isQueue(), this.getName());
      PostOffice postOffice = serverPeer.getPostOfficeInstance();
      Collection subs = postOffice.getQueuesForCondition(cond, true);
      Iterator iter = subs.iterator();
      while (iter.hasNext())
      {
         Queue queue = (Queue)iter.next();
         queue.setMaxSize(this.getMaxSize());
View Full Code Here

      {                          
         // Binding must be added before destination is registered in JNDI otherwise the user could
         // get a reference to the destination and use it while it is still being loaded. Also,
         // binding might already exist.
          
         PostOffice po = serverPeer.getPostOfficeInstance();
                          
         Binding binding = po.getBindingForQueueName(destination.getName());
        
         Queue queue;
        
         if (binding != null)
         {                    
           queue = binding.queue;
          
           if (queue.isActive())
           {
             throw new IllegalStateException("Cannot deploy queue " + destination.getName() + " it is already deployed");
           }
          
           //Sanity check - currently it is not possible to change the clustered attribute of a destination
           //See http://jira.jboss.org/jira/browse/JBMESSAGING-1235
            //See http://jira.jboss.org/jira/browse/JBMESSAGING-1742
            if (po.isClustered())
            {
               if (destination.isClustered() != queue.isClustered())
               {
                 
                  log.warn("Queue " + destination.getName()
                           + " previous clustered attribute is " + queue.isClustered()
                           + ". Now re-deploying it with clustered attribute: " + destination.isClustered());

                  queue = po.convertDestination(destination, queue.getName());
               }
            }
          
            queue.setPagingParams(destination.getFullSize(),
                               destination.getPageSize(),
                               destination.getDownCacheSize())
           
            queue.load();
              
            // Must be done after load
            queue.setMaxSize(destination.getMaxSize());
           
            int delCounterLevel = DeliveringCounter.toLevel(getDeliveringCounterLevel());
            queue.setDeliveringCounterLevel(delCounterLevel);
           
            queue.activate();          
         }
         else
         {          
            // Create a new queue

            JMSCondition queueCond = new JMSCondition(true, destination.getName());
           
            queue = new MessagingQueue(nodeId, destination.getName(),
                                     serverPeer.getChannelIDManager().getID(),
                                       serverPeer.getMessageStore(), serverPeer.getPersistenceManagerInstance(),
                                       true,
                                       destination.getMaxSize(), null,
                                       destination.getFullSize(), destination.getPageSize(),
                                       destination.getDownCacheSize(), destination.isClustered(),
                                       serverPeer.getRecoverDeliveriesTimeout(),
                                       ((ManagedQueue)destination).getDeliveringCounterLevel());
            po.addBinding(new Binding(queueCond, queue, false), false);
           
            queue.activate();
         }
        
         ((ManagedQueue)destination).setQueue(queue);
View Full Code Here

TOP

Related Classes of org.jboss.messaging.core.contract.PostOffice

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.