mirror of https://github.com/dapr/docs.git
jobs quickstart
Signed-off-by: Hannah Hunter <hannahhunter@microsoft.com>
This commit is contained in:
parent
a202696338
commit
205698fec2
|
@ -0,0 +1,223 @@
|
|||
---
|
||||
type: docs
|
||||
title: "Quickstart: Jobs"
|
||||
linkTitle: Jobs
|
||||
weight: 80
|
||||
description: Get started with the Dapr jobs building block
|
||||
---
|
||||
|
||||
{{% alert title="Alpha" color="warning" %}}
|
||||
The jobs building block is currently in **alpha**.
|
||||
{{% /alert %}}
|
||||
|
||||
Let's take a look at the [Dapr jobs building block]({{< ref jobs-overview.md >}}), which schedules and runs jobs at a specific time or interval. In this Quickstart, you'll schedule, get, and delete a job using Dapr's Job API.
|
||||
|
||||
Need diagram
|
||||
|
||||
|
||||
You can try out this pub/sub quickstart by either:
|
||||
|
||||
- [Running all applications in this sample simultaneously with the Multi-App Run template file]({{< ref "#run-using-multi-app-run" >}}), or
|
||||
- [Running one application at a time]({{< ref "#run-one-job-application-at-a-time" >}})
|
||||
|
||||
|
||||
## Run using Multi-App Run
|
||||
|
||||
Select your preferred language-specific Dapr SDK before proceeding with the Quickstart. Currently, you can experiment with the jobs API with the Go SDK.
|
||||
|
||||
{{< tabs Go >}}
|
||||
|
||||
<!-- Go -->
|
||||
{{% codetab %}}
|
||||
|
||||
This quickstart includes two apps:
|
||||
|
||||
- **`job-scheduler.go`:** schedules, retrieves, and deletes jobs.
|
||||
- **`job-service.go`:** handles the scheduled jobs.
|
||||
|
||||
### Step 1: Pre-requisites
|
||||
|
||||
For this example, you will need:
|
||||
|
||||
- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started).
|
||||
- [Latest version of Go](https://go.dev/dl/).
|
||||
<!-- IGNORE_LINKS -->
|
||||
- [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
||||
<!-- END_IGNORE -->
|
||||
|
||||
### Step 2: Set up the environment
|
||||
|
||||
Clone the [sample provided in the Quickstarts repo](https://github.com/dapr/quickstarts/tree/master/jobs).
|
||||
|
||||
```bash
|
||||
git clone https://github.com/dapr/quickstarts.git
|
||||
```
|
||||
|
||||
From the root of the Quickstarts directory, navigate into the jobs directory:
|
||||
|
||||
```bash
|
||||
cd jobs/go/sdk
|
||||
```
|
||||
|
||||
```bash
|
||||
dapr run -f .
|
||||
```
|
||||
|
||||
In the terminal output, you can see the following jobs being scheduled, retrieved, and deleted.
|
||||
|
||||
- The `R2-D2` job is being scheduled.
|
||||
- The `C-3PO` job is being scheduled.
|
||||
- The `C-3PO` job is being retrieved.
|
||||
- The `BB-8` job is being scheduled.
|
||||
- The `BB-8` job is being retrieved.
|
||||
- The `BB-8` job is being deleted.
|
||||
- The `R2-D2` job is being executed after 5 seconds.
|
||||
- The `R2-D2` job is being executed after 10 seconds.
|
||||
|
||||
**Expected output**
|
||||
|
||||
```text
|
||||
== APP - job-service == dapr client initializing for: 127.0.0.1:6281
|
||||
== APP - job-service == Registered job handler for: R2-D2
|
||||
== APP - job-service == Registered job handler for: C-3PO
|
||||
== APP - job-service == Registered job handler for: BB-8
|
||||
== APP - job-service == Starting server on port: 6200
|
||||
== APP - job-service == Job scheduled: R2-D2
|
||||
== APP - job-service == Job scheduled: C-3PO
|
||||
== APP - job-service == 2024/07/17 18:09:59 job:{name:"C-3PO" due_time:"10s" data:{value:"{\"droid\":\"C-3PO\",\"Task\":\"Memory Wipe\"}"}}
|
||||
== APP - job-scheduler == Get job response: {"droid":"C-3PO","Task":"Memory Wipe"}
|
||||
== APP - job-service == Job scheduled: BB-8
|
||||
== APP - job-service == 2024/07/17 18:09:59 job:{name:"BB-8" due_time:"15s" data:{value:"{\"droid\":\"BB-8\",\"Task\":\"Internal Gyroscope Check\"}"}}
|
||||
== APP - job-scheduler == Get job response: {"droid":"BB-8","Task":"Internal Gyroscope Check"}
|
||||
== APP - job-scheduler == Deleted job: BB-8
|
||||
```
|
||||
|
||||
After 5 seconds, the terminal output should present the `R2-D2` job being processed:
|
||||
|
||||
```text
|
||||
== APP - job-service == Starting droid: R2-D2
|
||||
== APP - job-service == Executing maintenance job: Oil Change
|
||||
```
|
||||
|
||||
After 10 seconds, the terminal output should present the `C3-PO` job being processed:
|
||||
|
||||
```text
|
||||
== APP - job-service == Starting droid: C-3PO
|
||||
== APP - job-service == Executing maintenance job: Memory Wipe
|
||||
```
|
||||
|
||||
Once the process has completed, you can stop and clean up application processes with a single command.
|
||||
|
||||
```bash
|
||||
dapr stop -f .
|
||||
```
|
||||
|
||||
### What happened?
|
||||
|
||||
{{% /codetab %}}
|
||||
|
||||
{{< /tabs >}}
|
||||
|
||||
## Run one job application at a time
|
||||
|
||||
{{< tabs Go >}}
|
||||
|
||||
<!-- Go -->
|
||||
{{% codetab %}}
|
||||
|
||||
This quickstart includes two apps:
|
||||
|
||||
- **`job-scheduler.go`:** schedules, retrieves, and deletes jobs.
|
||||
- **`job-service.go`:** handles the scheduled jobs.
|
||||
|
||||
### Step 1: Pre-requisites
|
||||
|
||||
For this example, you will need:
|
||||
|
||||
- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started).
|
||||
- [Latest version of Go](https://go.dev/dl/).
|
||||
<!-- IGNORE_LINKS -->
|
||||
- [Docker Desktop](https://www.docker.com/products/docker-desktop)
|
||||
<!-- END_IGNORE -->
|
||||
|
||||
### Step 2: Set up the environment
|
||||
|
||||
Clone the [sample provided in the Quickstarts repo](https://github.com/dapr/quickstarts/tree/master/jobs).
|
||||
|
||||
```bash
|
||||
git clone https://github.com/dapr/quickstarts.git
|
||||
```
|
||||
|
||||
From the root of the Quickstarts directory, navigate into the jobs directory:
|
||||
|
||||
```bash
|
||||
cd jobs/go/sdk
|
||||
```
|
||||
|
||||
### Step 3: Schedule jobs
|
||||
|
||||
In the terminal, run the `job-service` app:
|
||||
|
||||
```bash
|
||||
dapr run --app-id job-service --app-port 6200 --dapr-http-port 6280 --dapr-grpc-port 6281 --app-protocol grpc -- go run .
|
||||
```
|
||||
|
||||
**Expected output**
|
||||
|
||||
```text
|
||||
== APP == dapr client initializing for: 127.0.0.1:6281
|
||||
== APP == Registered job handler for: R2-D2
|
||||
== APP == Registered job handler for: C-3PO
|
||||
== APP == Registered job handler for: BB-8
|
||||
== APP == Starting server on port: 6200
|
||||
```
|
||||
|
||||
In a new terminal window, run the `job-scheduler` app:
|
||||
|
||||
```bash
|
||||
dapr run --app-id job-scheduler --app-port 6300 -- go run .
|
||||
```
|
||||
|
||||
**Expected output**
|
||||
|
||||
```text
|
||||
== APP == dapr client initializing for:
|
||||
== APP == Get job response: {"droid":"C-3PO","Task":"Memory Wipe"}
|
||||
== APP == Get job response: {"droid":"BB-8","Task":"Internal Gyroscope Check"}
|
||||
== APP == Job deleted: BB-8
|
||||
```
|
||||
|
||||
Return to the `job-service` app terminal window. The output should be:
|
||||
|
||||
```text
|
||||
== APP == Job scheduled: R2-D2
|
||||
== APP == Job scheduled: C-3PO
|
||||
== APP == 2024/07/17 18:25:36 job:{name:"C-3PO" due_time:"10s" data:{value:"{\"droid\":\"C-3PO\",\"Task\":\"Memory Wipe\"}"}}
|
||||
== APP == Job scheduled: BB-8
|
||||
== APP == 2024/07/17 18:25:36 job:{name:"BB-8" due_time:"15s" data:{value:"{\"droid\":\"BB-8\",\"Task\":\"Internal Gyroscope Check\"}"}}
|
||||
== APP == Starting droid: R2-D2
|
||||
== APP == Executing maintenance job: Oil Change
|
||||
== APP == Starting droid: C-3PO
|
||||
== APP == Executing maintenance job: Memory Wipe
|
||||
```
|
||||
|
||||
### What happened?
|
||||
|
||||
|
||||
{{% /codetab %}}
|
||||
|
||||
{{< /tabs >}}
|
||||
|
||||
## Tell us what you think!
|
||||
|
||||
We're continuously working to improve our Quickstart examples and value your feedback. Did you find this Quickstart helpful? Do you have suggestions for improvement?
|
||||
|
||||
Join the discussion in our [discord channel](https://discord.com/channels/778680217417809931/953427615916638238).
|
||||
|
||||
## Next steps
|
||||
|
||||
- Walk through [more examples of scheduling and orchestrating jobs using the jobs API](link)
|
||||
- Learn more about [the jobs building block](link)
|
||||
- Learn more about [the scheduler control plane](link)
|
||||
|
||||
{{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}}
|
Loading…
Reference in New Issue