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:
MuleContextAware, Disposable, Initialisable, InboundRouter, Router
Direct Known Subclasses:
IdempotentSecureHashReceiver

public class IdempotentReceiver
extends SelectiveConsumer

IdempotentReceiver ensures that only unique messages are received by a service. 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


Field Summary
protected  String assignedComponentName
           
protected  String idExpression
           
protected  ObjectStore store
           
 
Fields inherited from class org.mule.routing.inbound.SelectiveConsumer
logger
 
Fields inherited from class org.mule.routing.AbstractRouter
muleContext
 
Fields inherited from interface org.mule.api.lifecycle.Initialisable
PHASE_NAME
 
Fields inherited from interface org.mule.api.lifecycle.Disposable
PHASE_NAME
 
Constructor Summary
IdempotentReceiver()
           
 
Method Summary
protected  ObjectStore createMessageIdStore()
           
 String getIdExpression()
           
protected  String getIdForEvent(MuleEvent event)
           
 ObjectStore getStore()
           
protected  void initialize(MuleEvent event)
           
 boolean isMatch(MuleEvent event)
          Determines if the event should be processed by this router.
 MuleEvent[] process(MuleEvent event)
          A received MuleEvent is passed to this method for processing.
 void setIdExpression(String idExpression)
           
 void setStore(ObjectStore store)
           
 
Methods inherited from class org.mule.routing.inbound.SelectiveConsumer
getFilter, getMessageInfoMapping, isTransformFirst, setFilter, setMessageInfoMapping, setTransformFirst
 
Methods inherited from class org.mule.routing.AbstractRouter
dispose, getMuleContext, getRouterStatistics, initialise, setMuleContext, 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.api.routing.Router
getRouterStatistics, setRouterStatistics
 
Methods inherited from interface org.mule.api.lifecycle.Initialisable
initialise
 
Methods inherited from interface org.mule.api.lifecycle.Disposable
dispose
 

Field Detail

store

protected volatile ObjectStore store

assignedComponentName

protected volatile String assignedComponentName

idExpression

protected String idExpression
Constructor Detail

IdempotentReceiver

public IdempotentReceiver()
Method Detail

initialize

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

createMessageIdStore

protected ObjectStore createMessageIdStore()
                                    throws InitialisationException
Throws:
InitialisationException

isMatch

public boolean isMatch(MuleEvent event)
                throws MessagingException
Description copied from interface: InboundRouter
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 InboundRouter
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 MuleEvent[] process(MuleEvent event)
                    throws MessagingException
Description copied from interface: InboundRouter
A received MuleEvent 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 service. 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 InboundRouter
Overrides:
process in class SelectiveConsumer
Parameters:
event - the event received by the inbound endpoint before it is passed to the service
Returns:
null to indicate the event has been stored/destroyed or an array of events to be processed by the service
Throws:
MessagingException - if an error occurs during processing of the event

getIdForEvent

protected String getIdForEvent(MuleEvent event)
                        throws MessagingException
Throws:
MessagingException

getIdExpression

public String getIdExpression()

setIdExpression

public void setIdExpression(String idExpression)

getStore

public ObjectStore getStore()

setStore

public void setStore(ObjectStore store)


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