org.mule.routing.inbound
Class IdempotentReceiver

java.lang.Object
  extended by org.mule.routing.AbstractRouter
      extended by org.mule.routing.inbound.SelectiveConsumer
          extended by org.mule.routing.inbound.IdempotentReceiver
All Implemented Interfaces:
UMOInboundRouter, UMORouter
Direct Known Subclasses:
IdempotentSecureHashReceiver

public class IdempotentReceiver
extends SelectiveConsumer

IdempotentReceiver ensures that only unique messages are received by a component. It does this by checking the unique ID of the incoming message. Note that the underlying endpoint must support unique message IDs for this to work, otherwise a UniqueIdNotSupportedException is thrown.
By default this implementation uses an instance of IdempotentInMemoryMessageIdStore.


Field Summary
protected  String assignedComponentName
           
protected  int expirationInterval
           
protected  IdempotentMessageIdStore idStore
           
protected  int maxMessages
           
protected  int messageTTL
           
 
Fields inherited from class org.mule.routing.inbound.SelectiveConsumer
logger
 
Constructor Summary
IdempotentReceiver()
           
 
Method Summary
protected  IdempotentMessageIdStore createMessageIdStore()
           
 int getExpirationInterval()
           
protected  Object getIdForEvent(UMOEvent event)
           
 int getMaxMessages()
           
 int getMessageTTL()
           
protected  void initialize(UMOEvent event)
           
 boolean isMatch(UMOEvent event)
          Determines if the event should be processed by this router.
 UMOEvent[] process(UMOEvent event)
          A received UMOEvent is passed to this method for processing.
 void setExpirationInterval(int expirationInterval)
           
 void setMaxMessages(int maxMessages)
           
 void setMessageTTL(int messageTTL)
           
 
Methods inherited from class org.mule.routing.inbound.SelectiveConsumer
getFilter, isTransformFirst, setFilter, setTransformFirst
 
Methods inherited from class org.mule.routing.AbstractRouter
getRouterStatistics, setRouterStatistics
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.mule.umo.routing.UMORouter
getRouterStatistics, setRouterStatistics
 

Field Detail

idStore

protected volatile IdempotentMessageIdStore idStore

assignedComponentName

protected volatile String assignedComponentName

maxMessages

protected volatile int maxMessages

messageTTL

protected volatile int messageTTL

expirationInterval

protected volatile int expirationInterval
Constructor Detail

IdempotentReceiver

public IdempotentReceiver()
Method Detail

getMaxMessages

public int getMaxMessages()

setMaxMessages

public void setMaxMessages(int maxMessages)

getMessageTTL

public int getMessageTTL()

setMessageTTL

public void setMessageTTL(int messageTTL)

getExpirationInterval

public int getExpirationInterval()

setExpirationInterval

public void setExpirationInterval(int expirationInterval)

initialize

protected void initialize(UMOEvent event)
                   throws RoutingException
Throws:
RoutingException

createMessageIdStore

protected IdempotentMessageIdStore createMessageIdStore()

isMatch

public boolean isMatch(UMOEvent event)
                throws MessagingException
Description copied from interface: UMOInboundRouter
Determines if the event should be processed by this router. Routers can be selectively invoked by configuing a filter on them. Usually the filter is applied to the event when calling this method. All core Mule inbound routers extend the SelectiveConsumer router.

Specified by:
isMatch in interface UMOInboundRouter
Overrides:
isMatch in class SelectiveConsumer
Parameters:
event - the current event to evaluate
Returns:
true if the event should be processed by this router
Throws:
MessagingException - if the event cannot be evaluated
See Also:
SelectiveConsumer

process

public UMOEvent[] process(UMOEvent event)
                   throws MessagingException
Description copied from interface: UMOInboundRouter
A received UMOEvent is passed to this method for processing. The router can control processing by either 1. passing back a null to indicate that the router has either discarded the event of the event has been stored for further processing. A reaosn for storing the event might be that other events in it's correlation group are expected to be received. 2. Pass back an array of one or more events to be processed by the component. Often 1 event is returned, i.e. in the case of event aggregation. The router may return an array of events if a set of events have been resequenced or multiple events have been generated from a single event.

Specified by:
process in interface UMOInboundRouter
Overrides:
process in class SelectiveConsumer
Parameters:
event - the event received by the inbound endpoint before it is passed to the component
Returns:
null to indicate the event has been stored/destroyed or an array of events to be processed by the component
Throws:
MessagingException - if an error occurs during processing of the event

getIdForEvent

protected Object getIdForEvent(UMOEvent event)
                        throws MessagingException
Throws:
MessagingException


Copyright © 2003-2008 MuleSource, Inc.. All Rights Reserved.