Class 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 Detail

      • DEFAULT_CHECK_KEY

        public static final java.lang.String DEFAULT_CHECK_KEY

        Metadata key against which the value to check for uniqueness is stored.

        See Also:
        Constant Field Values
    • Constructor Detail

      • DuplicateMessageRoutingService

        public DuplicateMessageRoutingService()
    • Method Detail

      • 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​(java.lang.String key)

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

        Parameters:
        key - the Key to check
      • getKeyToCheck

        public java.lang.String getKeyToCheck()

        Gets the key for the MetadataElement to check for uniqueness.

        Returns:
        the Key to check
      • setConfigLocation

        public void setConfigLocation​(java.lang.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 java.lang.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​(java.lang.String key)

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

        Parameters:
        key - the Key to set against
      • getDestinationKey

        public java.lang.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​(java.lang.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 java.lang.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​(java.lang.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 java.lang.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
      • 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