org.jboss.messaging.core.local
Class RoundRobinPointToPointRouter

java.lang.Object
  extended byorg.jboss.messaging.core.local.RoundRobinPointToPointRouter
All Implemented Interfaces:
Distributor, Router

public class RoundRobinPointToPointRouter
extends java.lang.Object
implements Router

This router deliver the reference to a maximum of one of the router's receivers. The router will always first try the next receiver in the list to the one it tried last time This gives a more balanced distribution than the FirstReceiverPointToPointRouter and is better suited when batching messages to consumers since we will end up with messages interleaved amongst consumers rather than in contiguous blocks.

Version:
$Revision: 1 $ $Id: $
Author:
Tim Fox, Ovidiu Feodorov

Field Summary
protected  java.util.ArrayList receivers
           
protected  int target
           
 
Constructor Summary
RoundRobinPointToPointRouter()
           
 
Method Summary
 boolean add(Receiver r)
          Add a local receiver to this distributor.
 void clear()
          Remove all receivers.
 boolean contains(Receiver r)
           
 java.util.Set handle(DeliveryObserver observer, Routable routable, Transaction tx)
          Returns a set of Delivery instances.
 java.util.Iterator iterator()
           
 boolean remove(Receiver r)
          Remove a local receiver from this distributor.
protected  void shiftTarget(int currentTarget)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

receivers

protected java.util.ArrayList receivers

target

protected int target
Constructor Detail

RoundRobinPointToPointRouter

public RoundRobinPointToPointRouter()
Method Detail

handle

public java.util.Set handle(DeliveryObserver observer,
                            Routable routable,
                            Transaction tx)
Description copied from interface: Router
Returns a set of Delivery instances.

Specified by:
handle in interface Router

add

public boolean add(Receiver r)
Description copied from interface: Distributor
Add a local receiver to this distributor.

Specified by:
add in interface Distributor
Returns:
true if the distributor did not already contain the specified receiver and the receiver was added to the distributor, false otherwise.

remove

public boolean remove(Receiver r)
Description copied from interface: Distributor
Remove a local receiver from this distributor.

Specified by:
remove in interface Distributor
Returns:
true if this distributor contained the specified receiver.

clear

public void clear()
Description copied from interface: Distributor
Remove all receivers.

Specified by:
clear in interface Distributor

contains

public boolean contains(Receiver r)
Specified by:
contains in interface Distributor

iterator

public java.util.Iterator iterator()
Specified by:
iterator in interface Distributor
Returns:
an iterator of local receivers

shiftTarget

protected void shiftTarget(int currentTarget)


Copyright © 2006 JBoss Inc. All Rights Reserved.