Class BufferingApplicationStartup

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

public class BufferingApplicationStartup extends Object implements 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
Author:
Brian Clozel, Phillip Webb
  • Constructor Details

    • 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 Details

    • 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:
      IllegalStateException - if called and StartupStep have been recorded already.
    • addFilter

      public void addFilter(Predicate<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.
    • start

      public StartupStep start(String name)
      Specified by:
      start in interface ApplicationStartup
    • 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.