Class Awakeable<T>


  • public final class Awakeable<T>
    extends Awaitable<U>
    An Awakeable is a special type of Awaitable which can be arbitrarily completed by another service, by addressing it with its id().

    It can be used to let a service wait on a specific condition/result, which is fulfilled by another service or by an external system at a later point in time.

    For example, you can send a Kafka record including the id(), and then let another service consume from Kafka the responses of given external system interaction by using Context.awakeableHandle(String).

    NOTE: This interface MUST NOT be accessed concurrently since it can lead to different orderings of user actions, corrupting the execution of the invocation.

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      dev.restate.sdk.common.syscalls.Result<U> awaitResult()  
      protected dev.restate.sdk.common.syscalls.Deferred<?> deferred()  
      java.lang.String id()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • id

        public java.lang.String id()
        Returns:
        the unique identifier of this Awakeable instance.
      • deferred

        protected dev.restate.sdk.common.syscalls.Deferred<?> deferred()
        Specified by:
        deferred in class Awaitable<U>
      • awaitResult

        public dev.restate.sdk.common.syscalls.Result<U> awaitResult()
                                                              throws dev.restate.sdk.common.TerminalException
        Specified by:
        awaitResult in class Awaitable<U>
        Throws:
        dev.restate.sdk.common.TerminalException