org.apache.catalina.tribes.group.interceptors
Class OrderInterceptor
java.lang.Object
   org.apache.catalina.tribes.group.ChannelInterceptorBase
org.apache.catalina.tribes.group.ChannelInterceptorBase
       org.apache.catalina.tribes.group.interceptors.OrderInterceptor
org.apache.catalina.tribes.group.interceptors.OrderInterceptor
- All Implemented Interfaces: 
- ChannelInterceptor, Heartbeat, MembershipListener
- public class OrderInterceptor 
- extends ChannelInterceptorBase
The order interceptor guarantees that messages are received in the same order they were 
 sent.
 This interceptor works best with the ack=true setting. 
 There is no point in 
 using this with the replicationMode="fastasynchqueue" as this mode guarantees ordering.
 If you are using the mode ack=false replicationMode=pooled, and have a lot of concurrent threads,
 this interceptor can really slow you down, as many messages will be completely out of order
 and the queue might become rather large. If this is the case, then you might want to set 
 the value OrderInterceptor.maxQueue = 25 (meaning that we will never keep more than 25 messages in our queue)
 
Configuration Options
 OrderInteceptor.expire= - if a message arrives out of order, how long before we act on it default=3000ms
 OrderInteceptor.maxQueue= - how much can the queue grow to ensure ordering. 
   This setting is useful to avoid OutOfMemoryErrorsdefault=Integer.MAX_VALUE
 OrderInterceptor.forwardExpired= - this flag tells the interceptor what to 
 do when a message has expired or the queue has grown larger than the maxQueue value.
 true means that the message is sent up the stack to the receiver that will receive and out of order message
 false means, forget the message and reset the message counter. default=true
- Version:
- 1.1
- Author:
- Filip Hanik
 
 
 
 
 
 
| Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBase | 
| accept, fireInterceptorEvent, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, heartbeat, okToProcess, setNext, setOptionFlag, setPrevious, start, stop | 
 
| Methods inherited from class java.lang.Object | 
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | 
 
OrderInterceptor
public OrderInterceptor()
sendMessage
public void sendMessage(Member[] destination,
                        ChannelMessage msg,
                        InterceptorPayload payload)
                 throws ChannelException
- Description copied from interface: ChannelInterceptor
- The sendMessagemethod is called when a message is being sent to one more destinations.
 The interceptor can modify any of the parameters and then pass on the message down the stack by
 invokinggetNext().sendMessage(destination,msg,payload)
 Alternatively the interceptor can stop the message from being sent by not invokinggetNext().sendMessage(destination,msg,payload)
 If the message is to be sent asynchronous the application can be notified of completion and 
 errors by passing in an error handler attached to a payload object.
 The ChannelMessage.getAddress contains Channel.getLocalMember, and can be overwritten 
 to simulate a message sent from another node.
 
 
- 
- Specified by:
- sendMessagein interface- ChannelInterceptor
- Overrides:
- sendMessagein class- ChannelInterceptorBase
 
- 
- Parameters:
- destination- Member[] - the destination for this message
- msg- ChannelMessage - the message to be sent
- payload- InterceptorPayload - the payload, carrying an error handler and future useful data, can be null
- Throws:
- ChannelException
- See Also:
- ErrorHandler,- InterceptorPayload
 
messageReceived
public void messageReceived(ChannelMessage msg)
- Description copied from interface: ChannelInterceptor
- the messageReceivedis invoked when a message is received.ChannelMessage.getAddress()is the sender, or the reply-to address
 if it has been overwritten.
 
- 
- Specified by:
- messageReceivedin interface- ChannelInterceptor
- Overrides:
- messageReceivedin class- ChannelInterceptorBase
 
- 
- Parameters:
- msg- ChannelMessage
 
processLeftOvers
protected void processLeftOvers(Member member,
                                boolean force)
- 
 
processIncoming
protected boolean processIncoming(OrderInterceptor.MessageOrder order)
- 
- Parameters:
- order- MessageOrder
- Returns:
- boolean - true if a message expired and was processed
 
memberAdded
public void memberAdded(Member member)
- Description copied from interface: MembershipListener
- A member was added to the group
 
- 
- Specified by:
- memberAddedin interface- MembershipListener
- Overrides:
- memberAddedin class- ChannelInterceptorBase
 
- 
- Parameters:
- member- Member - the member that was added
 
memberDisappeared
public void memberDisappeared(Member member)
- Description copied from interface: MembershipListener
- A member was removed from the group
 If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD data
 
- 
- Specified by:
- memberDisappearedin interface- MembershipListener
- Overrides:
- memberDisappearedin class- ChannelInterceptorBase
 
- 
- Parameters:
- member- Member
- See Also:
- Member.SHUTDOWN_PAYLOAD
 
incCounter
protected int incCounter(Member mbr)
- 
 
getInCounter
protected OrderInterceptor.Counter getInCounter(Member mbr)
- 
 
getOutCounter
protected OrderInterceptor.Counter getOutCounter(Member mbr)
- 
 
setExpire
public void setExpire(long expire)
- 
 
setForwardExpired
public void setForwardExpired(boolean forwardExpired)
- 
 
setMaxQueue
public void setMaxQueue(int maxQueue)
- 
 
getExpire
public long getExpire()
- 
 
getForwardExpired
public boolean getForwardExpired()
- 
 
getMaxQueue
public int getMaxQueue()
- 
 
Copyright © 2000-2017 Apache Software Foundation. All Rights Reserved.