org.springframework.boot.context.metrics.buffering

Class BufferingApplicationStartup

  • java.lang.Object
    • org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup
  • All Implemented Interfaces:
    org.springframework.core.metrics.ApplicationStartup


    public class BufferingApplicationStartup
    extends java.lang.Object
    implements org.springframework.core.metrics.ApplicationStartup
    ApplicationStartup implementation that buffers steps and records their timestamp as well as their processing time.

    Once recording has been started, steps are buffered up until the configured capacity; after that, new steps are not recorded.

    There are several ways to keep the buffer size low:

    • configuring filters to only record steps that are relevant to us.
    • draining the buffered steps.

    Since:
    2.4.0
    • Field Summary

      • Fields inherited from interface org.springframework.core.metrics.ApplicationStartup

        DEFAULT
    • Constructor Summary

      Constructors 
      Constructor and Description
      BufferingApplicationStartup(int capacity)
      Create a new buffered ApplicationStartup with a limited capacity and starts the recording of steps.
    • Constructor Detail

      • BufferingApplicationStartup

        public BufferingApplicationStartup(int capacity)
        Create a new buffered ApplicationStartup with a limited capacity and starts the recording of steps.
        Parameters:
        capacity - the configured capacity; once reached, new steps are not recorded.
    • Method Detail

      • startRecording

        public void startRecording()
        Start the recording of steps and mark the beginning of the StartupTimeline. The class constructor already implicitly calls this, but it is possible to reset it as long as steps have not been recorded already.
        Throws:
        java.lang.IllegalStateException - if called and StartupStep have been recorded already.
      • addFilter

        public void addFilter(java.util.function.Predicate<org.springframework.core.metrics.StartupStep> filter)
        Add a predicate filter to the list of existing ones.

        A step that doesn't match all filters will not be recorded.

        Parameters:
        filter - the predicate filter to add.
      • getBufferedTimeline

        public StartupTimeline getBufferedTimeline()
        Return the timeline as a snapshot of currently buffered steps.

        This will not remove steps from the buffer, see drainBufferedTimeline() for its counterpart.

        Returns:
        a snapshot of currently buffered steps.
      • drainBufferedTimeline

        public StartupTimeline drainBufferedTimeline()
        Return the timeline by pulling steps from the buffer.

        This removes steps from the buffer, see getBufferedTimeline() for its read-only counterpart.

        Returns:
        buffered steps drained from the buffer.
      • start

        public org.springframework.core.metrics.StartupStep start(java.lang.String name)
        Specified by:
        start in interface org.springframework.core.metrics.ApplicationStartup