Class JobContext

java.lang.Object
org.jobrunr.jobs.context.JobContext
Direct Known Subclasses:
RunnerJobContext

public class JobContext extends Object
The JobContext class gives access to the Job id, the Job name, the state, ... .

Using the getMetadata(), it also allows to store some data between different job retries so jobs can be made re-entrant. This comes in handy when your job exists out of multiple steps, and you want to keep track of which step already succeeded. Then, in case of a failure, you can skip the steps that already completed successfully. As soon as the job is completed successfully the metadata is cleared (for storage purpose reasons).

  • Field Details

  • Constructor Details

    • JobContext

      protected JobContext()
    • JobContext

      protected JobContext(Job job)
      Keep constructor package protected to remove confusion on how to instantiate the JobContext. Tip - To use the JobContext in your Job, pass JobContext.Null
      Parameters:
      job - the job for this JobContext
  • Method Details

    • getJobId

      public UUID getJobId()
    • getJobName

      public String getJobName()
    • getJobState

      public StateName getJobState()
    • getCreatedAt

      public Instant getCreatedAt()
    • getUpdatedAt

      public Instant getUpdatedAt()
    • getSignature

      public String getSignature()
    • logger

      public JobDashboardLogger logger()
    • progressBar

      public JobDashboardProgressBar progressBar(int totalAmount)
    • progressBar

      public JobDashboardProgressBar progressBar(long totalAmount)
    • getMetadata

      public Map<String,Object> getMetadata()
      Gives access to Job Metadata via an UnmodifiableMap. To save Metadata, use the saveMetadata(String, Object) method
      Returns:
      all user defined metadata about a Job. This metadata is only accessible up to the point a job succeeds.
    • saveMetadata

      public void saveMetadata(String key, Object metadata)
      Allows saving metadata for a certain Job. The value must either be a simple type (String, UUID, Integers, ...) or implement the Metadata interface for serialization to Json. Note that it is important that the objects you save are thread-safe (e.g. a CopyOnWriteArrayList, ... ).

      If the key already exists, the metadata is updated.

      Parameters:
      key - the key to store the metadata
      metadata - the metadata itself
    • saveMetadataIfAbsent

      public void saveMetadataIfAbsent(String key, Object metadata)
      Allows saving metadata for a certain Job. The value must either be a simple type (String, UUID, Integers, ...) or implement the Metadata interface for serialization to Json. Note that it is important that the objects you save are thread-safe (e.g. a CopyOnWriteArrayList, ... ).

      If the key already exists, the metadata is NOT updated.

      Parameters:
      key - the key to store the metadata
      metadata - the metadata itself