org.apache.catalina.tribes.group.interceptors

Class OrderInterceptor

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

Nested Class Summary
protected static classOrderInterceptor.Counter
protected static classOrderInterceptor.MessageOrder
Method Summary
longgetExpire()
booleangetForwardExpired()
protected OrderInterceptor.CountergetInCounter(Member mbr)
intgetMaxQueue()
protected OrderInterceptor.CountergetOutCounter(Member mbr)
protected intincCounter(Member mbr)
voidmemberAdded(Member member)
voidmemberDisappeared(Member member)
voidmessageReceived(ChannelMessage msg)
protected booleanprocessIncoming(OrderInterceptor.MessageOrder order)
protected voidprocessLeftOvers(Member member, boolean force)
voidsendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)
voidsetExpire(long expire)
voidsetForwardExpired(boolean forwardExpired)
voidsetMaxQueue(int maxQueue)

Method Detail

getExpire

public long getExpire()

getForwardExpired

public boolean getForwardExpired()

getInCounter

protected OrderInterceptor.Counter getInCounter(Member mbr)

getMaxQueue

public int getMaxQueue()

getOutCounter

protected OrderInterceptor.Counter getOutCounter(Member mbr)

incCounter

protected int incCounter(Member mbr)

memberAdded

public void memberAdded(Member member)

memberDisappeared

public void memberDisappeared(Member member)

messageReceived

public void messageReceived(ChannelMessage msg)

processIncoming

protected boolean processIncoming(OrderInterceptor.MessageOrder order)

Parameters: order MessageOrder

Returns: boolean - true if a message expired and was processed

processLeftOvers

protected void processLeftOvers(Member member, boolean force)

sendMessage

public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload)

setExpire

public void setExpire(long expire)

setForwardExpired

public void setForwardExpired(boolean forwardExpired)

setMaxQueue

public void setMaxQueue(int maxQueue)
Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.