Package org.jboss.messaging.core.contract

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


      // If this is a consumer of a non durable subscription then we want to unbind the
      // subscription and delete all its data.

      if (destination.isTopic())
      {
         PostOffice postOffice = sessionEndpoint.getConnectionEndpoint().getServerPeer().getPostOfficeInstance();
                 
         ServerPeer sp = sessionEndpoint.getConnectionEndpoint().getServerPeer();
        
         Binding binding = postOffice.getBindingForQueueName(queueName);
        
         //https://jira.jboss.org/jira/browse/JBMESSAGING-1801
         if (binding == null) return;
        
         Queue queue = binding.queue;       
        
         ManagedDestination mDest = sp.getDestinationManager().getDestination(destination.getName(), false);
        
         if (!queue.isRecoverable())
         {
            postOffice.removeBinding(queueName, false);           

            if (!mDest.isTemporary())
            {
              String counterName = TopicService.SUBSCRIPTION_MESSAGECOUNTER_PREFIX + queueName;
 
              MessageCounter counter = sp.getMessageCounterManager().unregisterMessageCounter(counterName);
 
              if (counter == null)
              {
                 throw new IllegalStateException("Cannot find counter to remove " + counterName);
              }
            }
         }
         else
         {
           //Durable sub consumer
          
           if (queue.isClustered() && postOffice.isClustered())
            {
              //Clustered durable sub consumer created - we need to remove this info from the replicator
             
              Replicator rep = (Replicator)postOffice;
             
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());
           
            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());
            po.addBinding(new Binding(queueCond, queue, false), false);        
           
            queue.activate();
         }
        
         ((ManagedQueue)destination).setQueue(queue);
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);        

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

       //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.getResult());
       //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

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

     PostOffice office2 = null;

     try
     {  
       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, false);
       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, false);
       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, false);
       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, false);
       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, false);
       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, false);
       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, false);
       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, false);
       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);        

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

       //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 - neither should non clustered ones

       for (int i = 0; i < 16; i++)
       {
         if (i >= 8 || (queues[i].getNodeID() == 2 && queues[i].isRecoverable())
             || (queues[i].getNodeID() == 2 && !queues[i].isClustered()))
         {
           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.getResult());
       //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())
             || (queues[i].getNodeID() == 1 && !queues[i].isClustered()))
         {
           //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

    * If queue is routed to locally it shouldn't be routed to on other nodes
    *
    */
   private void routeSharedQueue(boolean persistentMessage) throws Throwable
   {
     PostOffice office1 = null;

     PostOffice office2 = null;

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

       //queue1

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

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


       //queue2

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

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


       SimpleReceiver receiver0 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue0.getLocalDistributor().add(receiver0);

       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);

       //Route to myqueue1 from office1        

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

       RouteResult routed = office1.route(ref, new SimpleCondition("myqueue1"), null);        
       assertTrue(routed.getResult());

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

       //Only queue0 should get the message
       checkGetsMessage(queue0, receiver0, msg);

       checkNotGetsMessage(queue1, receiver1);

       checkNotGetsMessage(queue2, receiver2);

       checkNotGetsMessage(queue3, receiver3);

       //  Route to myqueue1 from office 2     

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

       routed = office2.route(ref, new SimpleCondition("myqueue1"), null);        
       assertTrue(routed.getResult());

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

       //Only queue1 should get the message
       checkGetsMessage(queue1, receiver1, msg);

       checkNotGetsMessage(queue0, receiver0);

       checkNotGetsMessage(queue2, receiver2);

       checkNotGetsMessage(queue3, receiver3);


       //Now route to condition2 from office 1

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

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

       // Only queue2 should get the message
       checkGetsMessage(queue2, receiver2, msg);

       checkNotGetsMessage(queue1, receiver1);

       checkNotGetsMessage(queue0, receiver0);

       checkNotGetsMessage(queue3, receiver3);


       //Now route to condition2 from office 2

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

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

       // Only queue3 should get the message
       checkGetsMessage(queue3, receiver3, msg);

       checkNotGetsMessage(queue1, receiver1);

       checkNotGetsMessage(queue0, receiver0);

       checkNotGetsMessage(queue2, receiver2);
     }
     finally
     {
       if (office1 != null)
       {
         office1.stop();
       }

       if (office2 != null)
       {

         office2.stop();
       }

     }
   }
View Full Code Here

   }


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

     PostOffice office2 = null;

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


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

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


       Queue queue2 = new MessagingQueue(1, "sub3", channelIDManager.getID(), ms, pm, false, -1, null, true);
       queue2.activate();
       added = office1.addBinding(new Binding(new SimpleCondition("condition2"), queue2, false), false);
       assertTrue(added);

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


       SimpleReceiver receiver0 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);
       queue0.getLocalDistributor().add(receiver0);

       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);

       //Route to condition1 from office1        

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

       RouteResult routed = office1.route(ref, new SimpleCondition("myqueue1"), null);        
       assertTrue(routed.getResult());

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

       //Only queue0 should get the message
       checkGetsMessage(queue0, receiver0, msg);

       checkNotGetsMessage(queue1, receiver1);

       checkNotGetsMessage(queue2, receiver2);

       checkNotGetsMessage(queue3, receiver3);

       //  Route to myqueue1 from office 2     

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

       routed = office2.route(ref, new SimpleCondition("myqueue1"), null);        
       assertTrue(routed.getResult());

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

       //Only queue1 should get the message
       checkGetsMessage(queue1, receiver1, msg);

       checkNotGetsMessage(queue0, receiver0);

       checkNotGetsMessage(queue2, receiver2);

       checkNotGetsMessage(queue3, receiver3);


       //Now route to condition2 from office 1

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

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

       // Only queue2 should get the message
       checkGetsMessage(queue2, receiver2, msg);

       checkNotGetsMessage(queue1, receiver1);

       checkNotGetsMessage(queue0, receiver0);

       checkNotGetsMessage(queue3, receiver3);


       //Now route to condition2 from office 2

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

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

       // Only queue3 should get the message
       checkGetsMessage(queue3, receiver3, msg);

       checkNotGetsMessage(queue1, receiver1);

       checkNotGetsMessage(queue0, receiver0);

       checkNotGetsMessage(queue2, receiver2);
     }
     finally
     {
       if (office1 != null)
       {
         office1.stop();
       }

       if (office2 != null)
       {

         office2.stop();
       }

     }
   }
View Full Code Here

      }
   }
  
   private void routeTransactional(boolean persistentMessage) throws Throwable
   {
      PostOffice postOffice = null;
     
      try
      {     
         postOffice = createNonClusteredPostOffice();
        
         Condition condition1 = new SimpleCondition("topic1");
     
         MessagingQueue queue1 = new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue1.activate();
        
         postOffice.addBinding(new Binding(condition1, queue1, false), false);
        
         MessagingQueue queue2 = new MessagingQueue(1, "queue2", channelIDManager.getID(), ms, pm, true,-1, null, false);
         queue2.activate();
        
         postOffice.addBinding(new Binding(condition1, queue2, false), false);
         
         SimpleReceiver receiver1 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
         queue1.getLocalDistributor().add(receiver1);

         SimpleReceiver receiver2 = new SimpleReceiver("blah", SimpleReceiver.ACCEPTING);;
         queue2.getLocalDistributor().add(receiver2);
  
         assertTrue(queue1.isActive());
         assertTrue(queue2.isActive());
  
         Message msg1 = CoreMessageFactory.createCoreMessage(1, persistentMessage, null);     
         MessageReference ref1 = ms.reference(msg1);
        
         Message msg2 = CoreMessageFactory.createCoreMessage(2, persistentMessage, null);     
         MessageReference ref2 = ms.reference(msg2);
        
         Transaction tx = tr.createTransaction();
        
         RouteResult routed = postOffice.route(ref1, condition1, tx);           
         assertTrue(routed.getResult());
         routed = postOffice.route(ref2, condition1, tx);           
         assertTrue(routed.getResult());
              
         List msgs = queue1.browse(null);
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         msgs = queue2.browse(null);
         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
         receiver1.acknowledge(msgRec1, null);
         receiver1.acknowledge(msgRec2, null);
        
         receiver2.acknowledge(msgRec1, null);
         receiver2.acknowledge(msgRec2, null);
  
         msgs = queue1.browse(null);
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         receiver1.clear();
        
         msgs = queue2.browse(null);
         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, condition1, tx);           
         assertTrue(routed.getResult());
         routed = postOffice.route(ref4, condition1, tx);           
         assertTrue(routed.getResult());
              
         msgs = queue1.browse(null);
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
        
         msgs = queue2.browse(null);
         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.getResult());
         routed = postOffice.route(ref6, new SimpleCondition("topic1"), null);           
         assertTrue(routed.getResult());
        
         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(null);
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty());
              
         receiver1.clear();
        
         msgs = queue2.browse(null);
         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.getResult());
         routed = postOffice.route(ref8, new SimpleCondition("topic1"), null);           
         assertTrue(routed.getResult());
        
         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);
         receiver1.acknowledge(msgRec2, null);
        
         deliveringCount = queue2.getDeliveringCount();
         assertEquals(2, deliveringCount);    
        
        
         receiver2.acknowledge(msgRec1, null);
         receiver2.acknowledge(msgRec2, null);        
        
         postOffice.removeBinding("queue1", false);
         postOffice.removeBinding("queue2", false);
      }
      finally
      {
         if (postOffice != null)
         {
            postOffice.stop();
         }        
      }
   }
View Full Code Here

      }
   }
  
   private void routeWithFilter(boolean persistentMessage) throws Throwable
   {
      PostOffice postOffice = null;
     
      try
      {     
         postOffice = createNonClusteredPostOffice();
        
         SimpleFilter filter = new SimpleFilter(2);
        
         Condition condition1 = new SimpleCondition("topic1");
     
         MessagingQueue queue1 = new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, filter, false);
         queue1.activate();
        
         postOffice.addBinding(new Binding(condition1, queue1, false), false);
        
         MessagingQueue queue2 = new MessagingQueue(1, "queue2", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue2.activate();
        
         postOffice.addBinding(new Binding(condition1, queue2, false), false);
        
         MessagingQueue queue3 = new MessagingQueue(1, "queue3", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue3.activate();
        
         postOffice.addBinding(new Binding(condition1, queue3, false), false);
        
         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);     
         MessageReference ref1 = ms.reference(msg1);        
         RouteResult routed = postOffice.route(ref1, condition1, null);     
         assertTrue(routed.getResult());
         Message msg2 = CoreMessageFactory.createCoreMessage(2);     
         MessageReference ref2 = ms.reference(msg2);        
         routed = postOffice.route(ref2, condition1, null);     
         assertTrue(routed.getResult());
         Message msg3 = CoreMessageFactory.createCoreMessage(3);     
         MessageReference ref3 = ms.reference(msg3);        
         routed = postOffice.route(ref3, condition1, null);     
         assertTrue(routed.getResult());
        
         List msgs = receiver1.getMessages();
         assertNotNull(msgs);          
         assertEquals(1, msgs.size());                 
         Message msgRec = (Message)msgs.get(0);
         assertTrue(msg2 == msgRec);
         receiver1.acknowledge(msgRec, null);
         msgs = queue1.browse(null);
         assertNotNull(msgs);
         assertTrue(msgs.isEmpty())
        
         msgs = receiver2.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);
         
         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());         
      }
      finally
      {
         if (postOffice != null)
         {
            postOffice.stop();
         }
       
      }
   }
View Full Code Here

   // Public --------------------------------------------------------
  
   public final void testBindUnbind() throws Throwable
   {
      PostOffice office1 = null;
     
      PostOffice office2 = null;
     
      PostOffice office3 = null;
     
      try
      {            
         office1 = createNonClusteredPostOffice();
        
         //Bind one durable
            
         MessagingQueue queue1 =
            new MessagingQueue(1, "durableQueue", channelIDManager.getID(), ms, pm, true, -1, null, false);
         queue1.activate();
        
         Condition condition1 = new SimpleCondition("condition1");
                 
         boolean added = office1.addBinding(new Binding(condition1, queue1, false), false);
         assertTrue(added);
        
         //Binding twice with the same name should fail     
         added = office1.addBinding(new Binding(condition1, queue1, false), false);
         assertFalse(added);
        
         //Can't bind a queue from another node
        
         try
         {
        
           MessagingQueue queuexx =
              new MessagingQueue(777, "durableQueue", channelIDManager.getID(), ms, pm, true, -1, null, false);
           queuexx.activate();
           office1.addBinding(new Binding(condition1, queuexx, false), false);
            fail();
         }
         catch (IllegalArgumentException e)
         {
            //Ok
         }
        
              
         //Bind one non durable
         MessagingQueue queue2 =
            new MessagingQueue(1, "nonDurableQueue", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue2.activate();
        
         Condition condition2 = new SimpleCondition("condition2");        
        
         added = office1.addBinding(new Binding(condition2, queue2, false), false);
         assertTrue(added);
        
         //Check they're there
        
         Collection queues = office1.getQueuesForCondition(condition1, true);
         assertNotNull(queues);
         assertEquals(1, queues.size());
         Queue rqueue1 = (Queue)queues.iterator().next();
         assertEquals(queue1, rqueue1);
        
         queues = office1.getQueuesForCondition(condition2, true);
         assertNotNull(queues);
         assertEquals(1, queues.size());
         Queue rqueue2 = (Queue)queues.iterator().next();
         assertEquals(queue2, rqueue2);
                         
         office1.stop();
        
         //Throw away the office and create another
         office2 = createNonClusteredPostOffice();
        
         //Only one binding should be there
         queues = office2.getQueuesForCondition(condition1, true);
         assertNotNull(queues);
         assertEquals(1, queues.size());
         rqueue1 = (Queue)queues.iterator().next();
         assertEquals(queue1, rqueue1);
        
         queues = office2.getQueuesForCondition(condition2, true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
        
         //Unbind the binding
         office2.removeBinding(queue1.getName(), false);        
        
         //Make sure no longer there
         queues = office2.getQueuesForCondition(condition1, true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
        
         queues = office2.getQueuesForCondition(condition2, true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
        
         office2.stop();
        
         //Throw away office and start another
         office3 = createNonClusteredPostOffice();
        
         //Make sure not there
         queues = office3.getQueuesForCondition(condition1, true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
        
         queues = office3.getQueuesForCondition(condition2, true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
                
      }
      finally
View Full Code Here

           
   }
  
   public final void testGetQueuesForCondition() throws Throwable
   {
      PostOffice office = null;
     
      try
      {     
         office = createNonClusteredPostOffice();
        
         Condition condition1 = new SimpleCondition("condition1");
        
         MessagingQueue queue1 = new MessagingQueue(1, "queue1", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue1.activate();
        
         office.addBinding(new Binding(condition1, queue1, false), false);
        
         MessagingQueue queue2 = new MessagingQueue(1, "queue2", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue2.activate();
        
         office.addBinding(new Binding(condition1, queue2, false), false);
        
         MessagingQueue queue3 = new MessagingQueue(1, "queue3", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue3.activate();
        
         office.addBinding(new Binding(condition1, queue3, false), false);
        
         MessagingQueue queue4 = new MessagingQueue(1, "queue4", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue4.activate();
        
         office.addBinding(new Binding(condition1, queue4, false), false);
        
         MessagingQueue queue5 = new MessagingQueue(1, "queue5", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue5.activate();
        
         Condition condition2 = new SimpleCondition("condition2");        
        
         office.addBinding(new Binding(condition2, queue5, false), false);
        
         MessagingQueue queue6 = new MessagingQueue(1, "queue6", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue6.activate();
        
         office.addBinding(new Binding(condition2, queue6, false), false);
        
         MessagingQueue queue7 = new MessagingQueue(1, "queue7", channelIDManager.getID(), ms, pm, false, -1, null, false);
         queue7.activate();
        
         office.addBinding(new Binding(condition2, queue7, false), false);
        
         MessagingQueue queue8 = new MessagingQueue(1, "queue8", channelIDManager.getID(), ms, pm,  false, -1, null, false);
         queue8.activate();
        
         office.addBinding(new Binding(condition2, queue8, false), false);
                 
         Collection queues = office.getQueuesForCondition(new SimpleCondition("dummy"), true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
                          
         //We don't match on substrings
         queues = office.getQueuesForCondition(new SimpleCondition("condition123"), true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
        
         //We don't currently support hierarchies
         queues = office.getQueuesForCondition(new SimpleCondition("condition1.subcondition"), true);
         assertNotNull(queues);
         assertTrue(queues.isEmpty());
        
         //Lookup the queues
        
         queues = office.getQueuesForCondition(condition1, true);
         assertNotNull(queues);
         assertEquals(4, queues.size());
        
         assertTrue(queues.contains(queue1));
         assertTrue(queues.contains(queue2));
         assertTrue(queues.contains(queue3));
         assertTrue(queues.contains(queue4));
        
         queues = office.getQueuesForCondition(condition2, true);
         assertNotNull(queues);
         assertEquals(4, queues.size());
        
         assertTrue(queues.contains(queue5));
         assertTrue(queues.contains(queue6));
         assertTrue(queues.contains(queue7));
         assertTrue(queues.contains(queue8));
        
         //Lookup should work on new instance too
        
         queues = office.getQueuesForCondition(new SimpleCondition("condition1"), true);
         assertNotNull(queues);
         assertEquals(4, queues.size());
        
         assertTrue(queues.contains(queue1));
         assertTrue(queues.contains(queue2));
         assertTrue(queues.contains(queue3));
         assertTrue(queues.contains(queue4));
        
         queues = office.getQueuesForCondition(new SimpleCondition("condition2"), true);
         assertNotNull(queues);
         assertEquals(4, queues.size());
        
         assertTrue(queues.contains(queue5));
         assertTrue(queues.contains(queue6));
         assertTrue(queues.contains(queue7));
         assertTrue(queues.contains(queue8));
        
      }
      finally
      {
         if (office != null)
         {
            office.stop();
         }
       
      }
        
   }
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.