Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/quarkiverse/quarkus-temporal

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

quarkus-extension workflow

Last synced: 5 days ago
JSON representation

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

Awesome Lists containing this project

README

        


# Quarkus Temporal



[![Version](https://img.shields.io/maven-central/v/io.quarkiverse.temporal/quarkus-temporal?logo=apache-maven&style=flat-square)](https://search.maven.org/artifact/io.quarkiverse.temporal/quarkus-temporal)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square)](https://opensource.org/licenses/Apache-2.0)
[![Build](https://github.com/quarkiverse/quarkus-temporal/actions/workflows/build.yml/badge.svg)](https://github.com/quarkiverse/quarkus-temporal/actions/workflows/build.yml)

A Quarkus extension that lets you utilize [Temporal](https://temporal.io/), 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](https://docs.quarkiverse.io/quarkus-temporal/dev/index.html) or check out the [Quarkus Insights](https://youtu.be/XICZxuaeYwI) video explaining what Temporal is and how to use it!

### Installation

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

- With [code.quarkus.io](https://code.quarkus.io/?a=temporal-bowl&j=17&e=io.quarkiverse.temporal%3Aquarkus-temporal)
- With the [Quarkus CLI](https://quarkus.io/guides/cli-tooling):

```bash
quarkus create app temporal-app -x=io.quarkiverse.temporal:quarkus-temporal
```
Or add to you pom.xml directly:

```xml

io.quarkiverse.temporal
quarkus-temporal
{project-version}

```

> [!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](https://github.com/melloware/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](http://img.youtube.com/vi/XICZxuaeYwI/0.jpg)](http://www.youtube.com/watch?v=XICZxuaeYwI "Quarkus Insights #183: Building Indestructible Services with Temporal")

## πŸ§‘β€πŸ’» Contributing

- Contribution is the best way to support and get involved in community!
- Please, consult our [Code of Conduct](./CODE_OF_CONDUCT.md) policies for interacting in our community.
- Contributions to `quarkus-temporal` Please check our [CONTRIBUTING.md](./CONTRIBUTING.md)

### If you have any idea or question 🀷

- [Ask a question](https://github.com/quarkiverse/quarkus-temporal/discussions)
- [Raise an issue](https://github.com/quarkiverse/quarkus-temporal/issues)
- [Feature request](https://github.com/quarkiverse/quarkus-temporal/issues)
- [Code submission](https://github.com/quarkiverse/quarkus-temporal/pulls)

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



LoΓ―c Hermann
LoΓ―c Hermann

🚧 πŸ’»
Melloware
Melloware

🚧 πŸ’»
Geoffrey GREBERT
Geoffrey GREBERT

πŸ’»
tmulle
tmulle

πŸ€” ⚠️
Shrikanth
Shrikanth

⚠️
Thore Johnsen
Thore Johnsen

πŸ›