Interface Timer


  • @Experimental(TIMERS)
    public interface Timer
    A timer for a specified time domain that can be set to register the desire for further processing at particular time in its specified time domain.

    See TimeDomain for details on the time domains available.

    In a DoFn, a Timer is specified by a TimerSpec annotated with DoFn.TimerId.

    An implementation of Timer is implicitly scoped - it may be scoped to a key and window, or a key, window, and trigger, etc.

    A timer exists in one of two states: set or unset. A timer can be set only for a single time per scope.

    Timer callbacks are not guaranteed to be called immediately according to the local view of the TimeDomain, but will be called at some time after the requested time, in timestamp order.

    • Method Detail

      • clear

        void clear()
        Clears a timer. Previous set timers will become unset.
      • offset

        Timer offset​(org.joda.time.Duration offset)
        Offsets the target timestamp used by setRelative() by the given duration.
      • align

        Timer align​(org.joda.time.Duration period)
        Aligns the target timestamp used by setRelative() to the next boundary of period.
      • withOutputTimestamp

        Timer withOutputTimestamp​(org.joda.time.Instant outputTime)
        Sets event time timer's output timestamp. Output watermark will be held at this timestamp until the timer fires.
      • withNoOutputTimestamp

        Timer withNoOutputTimestamp()
        Asserts that there is no output timestamp. The output watermark will not be held up, and it is illegal to output messages from this timer using the default output timestamp.
      • getCurrentRelativeTime

        org.joda.time.Instant getCurrentRelativeTime()
        Returns the current relative time used by setRelative() and offset(org.joda.time.Duration). This can be used by a client that self-manages relative timers (e.g. one that stores the current timer time in a state variable.