Class EventProcessorBuilder

  • All Implemented Interfaces:
    EventProcessorFactory

    public abstract class EventProcessorBuilder
    extends java.lang.Object
    implements EventProcessorFactory
    Contains methods for configuring delivery of analytics events.

    The SDK normally buffers analytics events and sends them to LaunchDarkly at intervals. If you want to customize this behavior, create a builder with Components.sendEvents(), change its properties with the methods of this class, and pass it to LDConfig.Builder.events(EventProcessorFactory):

    
         LDConfig config = new LDConfig.Builder()
             .events(Components.sendEvents().capacity(5000).flushIntervalSeconds(2))
             .build();
     

    Note that this class is abstract; the actual implementation is created by calling Components.sendEvents().

    Since:
    4.12.0
    • Field Detail

      • DEFAULT_DIAGNOSTIC_RECORDING_INTERVAL

        public static final java.time.Duration DEFAULT_DIAGNOSTIC_RECORDING_INTERVAL
        The default value for diagnosticRecordingInterval(Duration): 15 minutes.
      • DEFAULT_FLUSH_INTERVAL

        public static final java.time.Duration DEFAULT_FLUSH_INTERVAL
        The default value for flushInterval(Duration): 5 seconds.
      • DEFAULT_USER_KEYS_FLUSH_INTERVAL

        public static final java.time.Duration DEFAULT_USER_KEYS_FLUSH_INTERVAL
        The default value for userKeysFlushInterval(Duration): 5 minutes.
      • allAttributesPrivate

        protected boolean allAttributesPrivate
      • baseURI

        protected java.net.URI baseURI
      • capacity

        protected int capacity
      • diagnosticRecordingInterval

        protected java.time.Duration diagnosticRecordingInterval
      • flushInterval

        protected java.time.Duration flushInterval
      • inlineUsersInEvents

        protected boolean inlineUsersInEvents
      • privateAttributes

        protected java.util.Set<UserAttribute> privateAttributes
      • userKeysCapacity

        protected int userKeysCapacity
      • userKeysFlushInterval

        protected java.time.Duration userKeysFlushInterval
    • Constructor Detail

      • EventProcessorBuilder

        public EventProcessorBuilder()
    • Method Detail

      • allAttributesPrivate

        public EventProcessorBuilder allAttributesPrivate​(boolean allAttributesPrivate)
        Sets whether or not all optional user attributes should be hidden from LaunchDarkly.

        If this is true, all user attribute values (other than the key) will be private, not just the attributes specified in privateAttributeNames(String...) or on a per-user basis with LDUser.Builder methods. By default, it is false.

        Parameters:
        allAttributesPrivate - true if all user attributes should be private
        Returns:
        the builder
        See Also:
        privateAttributeNames(String...), LDUser.Builder
      • capacity

        public EventProcessorBuilder capacity​(int capacity)
        Set the capacity of the events buffer.

        The client buffers up to this many events in memory before flushing. If the capacity is exceeded before the buffer is flushed (see flushInterval(Duration), events will be discarded. Increasing the capacity means that events are less likely to be discarded, at the cost of consuming more memory.

        The default value is DEFAULT_CAPACITY.

        Parameters:
        capacity - the capacity of the event buffer
        Returns:
        the builder
      • eventSender

        public EventProcessorBuilder eventSender​(EventSenderFactory eventSenderFactory)
        Specifies a custom implementation for event delivery.

        The standard event delivery implementation sends event data via HTTP/HTTPS to the LaunchDarkly events service endpoint (or any other endpoint specified with baseURI(URI). Providing a custom implementation may be useful in tests, or if the event data needs to be stored and forwarded.

        Parameters:
        eventSenderFactory - a factory for an EventSender implementation
        Returns:
        the builder
      • flushInterval

        public EventProcessorBuilder flushInterval​(java.time.Duration flushInterval)
        Sets the interval between flushes of the event buffer.

        Decreasing the flush interval means that the event buffer is less likely to reach capacity.

        The default value is DEFAULT_FLUSH_INTERVAL.

        Parameters:
        flushInterval - the flush interval; null to use the default
        Returns:
        the builder
      • inlineUsersInEvents

        public EventProcessorBuilder inlineUsersInEvents​(boolean inlineUsersInEvents)
        Sets whether to include full user details in every analytics event.

        The default is false: events will only include the user key, except for one "index" event that provides the full details for the user).

        Parameters:
        inlineUsersInEvents - true if you want full user details in each event
        Returns:
        the builder
      • privateAttributeNames

        public EventProcessorBuilder privateAttributeNames​(java.lang.String... attributeNames)
        Marks a set of attribute names as private.

        Any users sent to LaunchDarkly with this configuration active will have attributes with these names removed. This is in addition to any attributes that were marked as private for an individual user with LDUser.Builder methods.

        Using privateAttributes(UserAttribute...) is preferable to avoid the possibility of misspelling a built-in attribute.

        Parameters:
        attributeNames - a set of names that will be removed from user data set to LaunchDarkly
        Returns:
        the builder
        See Also:
        allAttributesPrivate(boolean), LDUser.Builder
      • userKeysCapacity

        public EventProcessorBuilder userKeysCapacity​(int userKeysCapacity)
        Sets the number of user keys that the event processor can remember at any one time.

        To avoid sending duplicate user details in analytics events, the SDK maintains a cache of recently seen user keys, expiring at an interval set by userKeysFlushInterval(Duration).

        The default value is DEFAULT_USER_KEYS_CAPACITY.

        Parameters:
        userKeysCapacity - the maximum number of user keys to remember
        Returns:
        the builder
      • userKeysFlushInterval

        public EventProcessorBuilder userKeysFlushInterval​(java.time.Duration userKeysFlushInterval)
        Sets the interval at which the event processor will reset its cache of known user keys.

        The default value is DEFAULT_USER_KEYS_FLUSH_INTERVAL.

        Parameters:
        userKeysFlushInterval - the flush interval; null to use the default
        Returns:
        the builder