Class DuplicateMessageRoutingService

java.lang.Object
com.adaptris.core.ServiceImp
com.adaptris.core.services.duplicate.DuplicateMessageRoutingService
All Implemented Interfaces:
AdaptrisComponent, ComponentLifecycle, ComponentLifecycleExtension, MessageEventGenerator, Service, StateManagedComponent

@ComponentProfile(summary="Set Metadata based on whether the message is considered a duplicate or not", tag="service,duplicate") public class DuplicateMessageRoutingService extends ServiceImp

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.

  • Field Details

    • DEFAULT_CHECK_KEY

      public static final String 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

      public void setKeyToCheck(String key)

      Sets the key for the MetadataElement to check for uniqueness. Default is "DuplicateCheck".

      Parameters:
      key - the Key to check
    • getKeyToCheck

      public String getKeyToCheck()

      Gets the key for the MetadataElement to check for uniqueness.

      Returns:
      the Key to check
    • setConfigLocation

      public void setConfigLocation(String s)

      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

      public String getConfigLocation()

      Gets the location for the file that will contain the persisted list of received ids.

      Returns:
      the location of the file
    • setDestinationKey

      public void setDestinationKey(String key)

      Sets the Key for the output MetadataElement which will contain the output destination.

      Parameters:
      key - the Key to set against
    • getDestinationKey

      public String getDestinationKey()

      Gets the Key for the output MetadataElement which will contain the output destination.

      Returns:
      the Key to set against
    • setUniqueDestination

      public void setUniqueDestination(String destination)

      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

      public String 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

      public 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.

      Parameters:
      destination - the String to set on the output MetadataElement
    • getDuplicateDestination

      public String 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

      public void doService(AdaptrisMessage msg) throws ServiceException

      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

      protected void initService() throws CoreException
      Specified by:
      initService in class ServiceImp
      Throws:
      CoreException
    • closeService

      protected void closeService()
      Specified by:
      closeService in class ServiceImp
    • start

      public void start() throws CoreException
      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 interface ComponentLifecycle
      Overrides:
      start in class ServiceImp
      Throws:
      CoreException - wrapping any underlying Exceptions
    • stop

      public void stop()
      Description copied from interface: ComponentLifecycle
      Stop the component

      A stopped component is not expected to be ready to process messages. In the case of AdaptrisMessageConsumer, calling stop will pause message delivery. Throwing a RuntimeException may cause unintended consequences

      Specified by:
      stop in interface ComponentLifecycle
      Overrides:
      stop in class ServiceImp
    • prepare

      public void prepare() throws CoreException
      Description copied from interface: ComponentLifecycleExtension
      Prepare for initialisation.
      Throws:
      CoreException
    • tryAndLog

      protected static void tryAndLog(String logMsg, DuplicateMessageRoutingService.Operator l)
    • tryAndWrap

      protected static void tryAndWrap(DuplicateMessageRoutingService.Operator l) throws CoreException
      Throws:
      CoreException