Class DuplicateMessageRoutingService
- All Implemented Interfaces:
AdaptrisComponent
,ComponentLifecycle
,ComponentLifecycleExtension
,MessageEventGenerator
,Service
,StateManagedComponent
Class which checks the value of a configured metadata key against a list of previously received values. If the value appears in
the list, the value of getDuplicateDestination
is stored against the value of getDestinationKey
, if it
does not the value of getUniqueDestination
is used.
This class should really just set an isDuplicate
metadata key to true and leave the destination selection to
MetadataBranchingService
.
In the adapter configuration file this class is aliased as duplicate-message-routing-service which is the preferred alternative to the fully qualified classname when building your configuration.
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static interface
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Metadata key against which the value to check for uniqueness is stored.Fields inherited from class com.adaptris.core.ServiceImp
log
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
void
doService
(AdaptrisMessage msg) Method which checks to see if the message is unique (based on a metadata element) and sets a new metadata element with a value which is dependant upon the uniqueness or otherwise of the received element.Gets the location for the file that will contain the persisted list of received ids.Gets the Key for the output MetadataElement which will contain the output destination.Sets the output destination String which will be stored as the value of the MetadataElement if the id is not unique.int
Gets the number of elements to keep in the previously received IDs list.Gets the key for the MetadataElement to check for uniqueness.Gets the output destination String which will be stored as the value of the MetadataElement if the id is unique.protected void
void
prepare()
Prepare for initialisation.void
Sets the location for the file that will contain the persisted list of received ids.void
setDestinationKey
(String key) Sets the Key for the output MetadataElement which will contain the output destination.void
setDuplicateDestination
(String destination) Sets the output destination String which will be stored as the value of the MetadataElement if the id is not unique.void
setHistorySize
(int i) Sets the number of elements to keep in the previously received IDs list.void
setKeyToCheck
(String key) Sets the key for the MetadataElement to check for uniqueness.void
setUniqueDestination
(String destination) Sets the output destination String which will be stored as the value of the MetadataElement if the id is unique.void
start()
Starts the component.void
stop()
Stop the componentprotected static void
protected static void
Methods inherited from class com.adaptris.core.ServiceImp
changeState, close, continueOnFailure, createName, createQualifier, getContinueOnFail, getIsTrackingEndpoint, getUniqueId, init, isBranching, isTrackingEndpoint, requestClose, requestInit, requestStart, requestStop, retrieveComponentState, setContinueOnFail, setIsTrackingEndpoint, setUniqueId
-
Field Details
-
DEFAULT_CHECK_KEY
Metadata key against which the value to check for uniqueness is stored.
- See Also:
-
-
Constructor Details
-
DuplicateMessageRoutingService
public DuplicateMessageRoutingService()
-
-
Method Details
-
setHistorySize
public void setHistorySize(int i) Sets the number of elements to keep in the previously received IDs list. Default is 100
- Parameters:
i
- the number of message ids to retain
-
getHistorySize
public int getHistorySize()Gets the number of elements to keep in the previously received IDs list. Default is 100
- Returns:
- the number of message ids to retain
-
setKeyToCheck
Sets the key for the MetadataElement to check for uniqueness. Default is "DuplicateCheck".
- Parameters:
key
- the Key to check
-
getKeyToCheck
Gets the key for the MetadataElement to check for uniqueness.
- Returns:
- the Key to check
-
setConfigLocation
Sets the location for the file that will contain the persisted list of received ids.
- Parameters:
s
- a URI which must be in the form "file:///filepath"
-
getConfigLocation
Gets the location for the file that will contain the persisted list of received ids.
- Returns:
- the location of the file
-
setDestinationKey
Sets the Key for the output MetadataElement which will contain the output destination.
- Parameters:
key
- the Key to set against
-
getDestinationKey
Gets the Key for the output MetadataElement which will contain the output destination.
- Returns:
- the Key to set against
-
setUniqueDestination
Sets the output destination String which will be stored as the value of the MetadataElement if the id is unique.
- Parameters:
destination
- the String to set on the output MetadataElement
-
getUniqueDestination
Gets the output destination String which will be stored as the value of the MetadataElement if the id is unique.
- Returns:
- the String to set on the output MetadataElement
-
setDuplicateDestination
Sets the output destination String which will be stored as the value of the MetadataElement if the id is not unique.
- Parameters:
destination
- the String to set on the output MetadataElement
-
getDuplicateDestination
Sets the output destination String which will be stored as the value of the MetadataElement if the id is not unique.
- Returns:
- the String to set on the output MetadataElement
-
doService
Method which checks to see if the message is unique (based on a metadata element) and sets a new metadata element with a value which is dependant upon the uniqueness or otherwise of the received element.
- Parameters:
msg
- the input AdaptrisMessage- Throws:
ServiceException
- wrapping any underlying Exception
-
initService
- Specified by:
initService
in classServiceImp
- Throws:
CoreException
-
closeService
protected void closeService()- Specified by:
closeService
in classServiceImp
-
start
Description copied from interface:ComponentLifecycle
Starts the component.Once a component is started it should be ready to process messages. In the case of
AdaptrisMessageConsumer
, calling start will begin message delivery.- Specified by:
start
in interfaceComponentLifecycle
- Overrides:
start
in classServiceImp
- Throws:
CoreException
- wrapping any underlyingException
s
-
stop
public void stop()Description copied from interface:ComponentLifecycle
Stop the componentA stopped component is not expected to be ready to process messages. In the case of
AdaptrisMessageConsumer
, calling stop will pause message delivery. Throwing aRuntimeException
may cause unintended consequences- Specified by:
stop
in interfaceComponentLifecycle
- Overrides:
stop
in classServiceImp
-
prepare
Description copied from interface:ComponentLifecycleExtension
Prepare for initialisation.- Throws:
CoreException
-
tryAndLog
-
tryAndWrap
- Throws:
CoreException
-