Class OrderInterceptor
- java.lang.Object
- 
- org.apache.catalina.tribes.group.ChannelInterceptorBase
- 
- 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
 OrderInterceptor.expire=<milliseconds> - if a message arrives out of order, how long before we act on it default=3000ms
 OrderInterceptor.maxQueue=<max queue size> - how much can the queue grow to ensure ordering. This setting is useful to avoid OutOfMemoryErrorsdefault=Integer.MAX_VALUE
 OrderInterceptor.forwardExpired=<boolean> - 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
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description protected static classOrderInterceptor.Counterprotected static classOrderInterceptor.MessageOrder- 
Nested classes/interfaces inherited from interface org.apache.catalina.tribes.ChannelInterceptorChannelInterceptor.InterceptorEvent
 
- 
 - 
Field SummaryFields Modifier and Type Field Description protected static StringManagersm- 
Fields inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBaseoptionFlag
 
- 
 - 
Constructor SummaryConstructors Constructor Description OrderInterceptor()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description longgetExpire()booleangetForwardExpired()protected OrderInterceptor.CountergetInCounter(Member mbr)intgetMaxQueue()protected OrderInterceptor.CountergetOutCounter(Member mbr)protected intincCounter(Member mbr)voidmemberAdded(Member member)A member was added to the groupvoidmemberDisappeared(Member member)A member was removed from the group
 If the member left voluntarily, the Member.getCommand will contain the Member.SHUTDOWN_PAYLOAD datavoidmessageReceived(ChannelMessage msg)themessageReceivedis invoked when a message is received.protected booleanprocessIncoming(OrderInterceptor.MessageOrder order)protected voidprocessLeftOvers(Member member, boolean force)voidsendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)ThesendMessagemethod is called when a message is being sent to one more destinations.voidsetExpire(long expire)voidsetForwardExpired(boolean forwardExpired)voidsetMaxQueue(int maxQueue)- 
Methods inherited from class org.apache.catalina.tribes.group.ChannelInterceptorBasefireInterceptorEvent, getChannel, getLocalMember, getMember, getMembers, getNext, getOptionFlag, getPrevious, hasMembers, heartbeat, okToProcess, setChannel, setNext, setOptionFlag, setPrevious, start, stop
 
- 
 
- 
- 
- 
Field Detail- 
smprotected static final StringManager sm 
 
- 
 - 
Method Detail- 
sendMessagepublic void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException Description copied from interface:ChannelInterceptorThesendMessagemethod 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- if a serialization error happens.
- See Also:
- ErrorHandler,- InterceptorPayload
 
 - 
messageReceivedpublic void messageReceived(ChannelMessage msg) Description copied from interface:ChannelInterceptorthemessageReceivedis 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
 
 - 
processLeftOversprotected void processLeftOvers(Member member, boolean force) 
 - 
processIncomingprotected boolean processIncoming(OrderInterceptor.MessageOrder order) - Parameters:
- order- MessageOrder
- Returns:
- boolean - true if a message expired and was processed
 
 - 
memberAddedpublic void memberAdded(Member member) Description copied from interface:MembershipListenerA member was added to the group- Specified by:
- memberAddedin interface- MembershipListener
- Overrides:
- memberAddedin class- ChannelInterceptorBase
- Parameters:
- member- Member - the member that was added
 
 - 
memberDisappearedpublic void memberDisappeared(Member member) Description copied from interface:MembershipListenerA 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
 
 - 
incCounterprotected int incCounter(Member mbr) 
 - 
getInCounterprotected OrderInterceptor.Counter getInCounter(Member mbr) 
 - 
getOutCounterprotected OrderInterceptor.Counter getOutCounter(Member mbr) 
 - 
setExpirepublic void setExpire(long expire) 
 - 
setForwardExpiredpublic void setForwardExpired(boolean forwardExpired) 
 - 
setMaxQueuepublic void setMaxQueue(int maxQueue) 
 - 
getExpirepublic long getExpire() 
 - 
getForwardExpiredpublic boolean getForwardExpired() 
 - 
getMaxQueuepublic int getMaxQueue() 
 
- 
 
-