Skip to content

Temporal (https://temporal.io/) is a developer-first, open source platform that ensures the successful execution of services and applications.

License

Notifications You must be signed in to change notification settings

quarkiverse/quarkus-temporal

Repository files navigation

Quarkus Temporal


Version License Build

A Quarkus extension that lets you utilize Temporal, orchestrating both mission-critical and mainstream workloads.

Using this service has some obvious advantages including but not limited to:

  • Temporal captures the complete state of your functions (variables, threads, blocking calls) so you get the benefits of a state machine, without maintaining complex state machine code.
  • Temporal allows you to define exponential retry policies for Activities, so you don’t have to write retry logic into your application code. And your retry duration can be as long as needed, even months.
  • Set timers to wait for days, weeks, or months, knowing that an outage or server restart during the wait period won’t prevent your workflow from executing.
  • Temporal delivers an ability to schedule a workflow (much like a cron job) and then pause, re-start, and stop them as needed.
  • Temporal allows you to simply code for durable execution.
  • Use external sources -- including human actions -- that interact seamlessly with Workflows.
  • Temporal allows you to inspect, replay, and rewind every Workflow execution, step by step.

Getting started

Read the full Quarkus Temporal documentation or check out the Quarkus Insights video explaining what Temporal is and how to use it!

Installation

Create a new temporal project (with a base temporal starter code):

quarkus create app temporal-app -x=io.quarkiverse.temporal:quarkus-temporal

Or add to you pom.xml directly:

<dependency>
    <groupId>io.quarkiverse.temporal</groupId>
    <artifactId>quarkus-temporal</artifactId>
    <version>{project-version}</version>
</dependency>

Important

This extension is not supported in GraalVM Native Image mode due to complexities Temporal's use of grpc-netty-shaded. Netty 5 will apparently fix the issue so it possibly might have to wait until that release.

Demonstration Use Case

Quarkus Temporal Petstore is a comprehensive demonstration using Quarkus and Temporal. It simulates placing a new order on your Petstore website and fulfilling the order using a microservice architecture.

Quarkus Faces YouTube

🧑‍💻 Contributing

  • Contribution is the best way to support and get involved in community!
  • Please, consult our Code of Conduct policies for interacting in our community.
  • Contributions to quarkus-temporal Please check our CONTRIBUTING.md

If you have any idea or question 🤷

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Loïc Hermann
Loïc Hermann

🚧 💻
Melloware
Melloware

🚧 💻
Geoffrey GREBERT
Geoffrey GREBERT

💻
tmulle
tmulle

🤔 ⚠️
Shrikanth
Shrikanth

⚠️
Thore Johnsen
Thore Johnsen

🐛