Skip to content

Commit

Permalink
statemanagement multi app run
Browse files Browse the repository at this point in the history
  • Loading branch information
rabollin committed Sep 21, 2023
1 parent 2b056e1 commit 92e5b96
Show file tree
Hide file tree
Showing 17 changed files with 465 additions and 88 deletions.
67 changes: 55 additions & 12 deletions state_management/csharp/http/README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,94 @@
# Dapr state management (HTTP Client)

In this quickstart, you'll create a microservice to demonstrate Dapr's state management API. The service generates messages to store in a state store. See [Why state management](#why-state-management) to understand when to use this API.
In this quickstart, you'll create a microservice to demonstrate Dapr's state management API. The service generates messages to store in a state store. See [Why state management](https://docs.dapr.io/developing-applications/building-blocks/state-management/) to understand when to use this API.

Visit [this](https://docs.dapr.io/developing-applications/building-blocks/state-management/) link for more information about Dapr and State Management.

> **Note:** This example leverages HTTP `requests` only. If you are looking for the example using the Dapr Client SDK (recommended) [click here](../sdk/).
This quickstart includes one service:

- Dotnet client service `order-processor`
- Dotnet client service `order-processor`

### Run Dotnet service with Dapr
## Run all apps with multi-app run template file

1. Open a new terminal window and navigate to `order-processor` directory:
This section shows how to run applications at once using [multi-app run template files](https://docs.dapr.io/developing-applications/local-development/multi-app-dapr-run/multi-app-overview/) with `dapr run -f .`. This enables to you test the interactions between multiple applications.

1. Open a new terminal window and run `order-processor` using the multi app run template defined in [dapr.yaml](./dapr.yaml):

<!-- STEP
name: Install Dotnet dependencies
-->

```bash
cd ./order-processor
dotnet restore
dotnet build
```

<!-- END_STEP -->
2. Run the Dotnet service app with Dapr:

2. Run the Dotnet service app with Dapr:

<!-- STEP
name: Run order-processor service
expected_stdout_lines:
- '== APP == Getting Order: Order { orderId = 1 }'
- '== APP == Getting Order: Order { orderId = 2 }'
- "Exited App successfully"
expected_stderr_lines:
output_match_mode: substring
background: true
-->

```bash
dapr run -f .
```
<!-- END_STEP -->

```bash
dapr stop -f .
```

## Run a single app at a time with Dapr (Optional)

An alternative to running all or multiple applications at once is to run single apps one-at-a-time using multiple `dapr run .. -- dotnet run` commands. This next section covers how to do this.

1. Run the Dotnet service app with Dapr:

<!-- STEP
name: Run order-processor service
expected_stdout_lines:
- '== APP == Getting Order: {"orderId":1}'
- '== APP == Getting Order: {"orderId":2}'
- '== APP == Getting Order: Order { orderId = 1 }'
- '== APP == Getting Order: Order { orderId = 2 }'
- "Exited App successfully"
expected_stderr_lines:
output_match_mode: substring
background: true
sleep: 15
-->

```bash
cd ./order-processor
dapr run --app-id order-processor --resources-path ../../../resources/ -- dotnet run
```

<!-- END_STEP -->
The Terminal console output should look similar to this:

```bash
dapr stop --app-id order-processor
```text
You're up and running! Both Dapr and your app logs will appear here.
== APP == Saving Order: Order { orderId = 1 }
== APP == Getting Order: Order { orderId = 1 }
== APP == Deleting Order: Order { orderId = 1 }
== APP == Saving Order: Order { orderId = 2 }
== APP == Getting Order: Order { orderId = 2 }
== APP == Deleting Order: Order { orderId = 2 }
== APP == Saving Order: Order { orderId = 3 }
== APP == Getting Order: Order { orderId = 3 }
== APP == Deleting Order: Order { orderId = 3 }
```

2. Stop and clean up application processes

dapr stop --app-id order-processor
<!-- END_STEP -->
9 changes: 9 additions & 0 deletions state_management/csharp/http/dapr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

version: 1
common:
resourcesPath: ../../../resources/
apps:
- appID: order-processor
appDirPath: ./order-processor/
command: ["dotnet", "run"]

59 changes: 24 additions & 35 deletions state_management/csharp/sdk/README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
# Dapr state management

In this quickstart, you'll create a microservice to demonstrate Dapr's state management API. The service generates messages to store data in a state store. See [Why state management](#why-state-management) to understand when this pattern might be a good choice for your software architecture.
In this quickstart, you'll create a microservice to demonstrate Dapr's state management API. The service generates messages to store data in a state store. See [Why state management](https://docs.dapr.io/developing-applications/building-blocks/state-management/) to understand when this pattern might be a good choice for your software architecture.

Visit [this](https://docs.dapr.io/developing-applications/building-blocks/state-management/) link for more information about Dapr and State Management.

> **Note:** This example leverages the Dapr client SDK. If you are looking for the example using only HTTP [click here](../http).
This quickstart includes one service:

- Dotnet client service `order-processor`:

### Run Dotnet service with Dapr
This quickstart includes one service: Dotnet client service `order-processor`

## Run all apps with multi-app run template file

Expand All @@ -22,11 +18,10 @@ This section shows how to run applications at once using [multi-app run template
name: Install Dotnet dependencies
-->

```bash
cd ./order-processor
dotnet restore
dotnet build
```
```bash
dotnet restore
dotnet build
```

<!-- END_STEP -->

Expand All @@ -44,41 +39,35 @@ background: true
sleep: 15
-->

```bash
dapr run -f
```

The Terminal console output should look similar to this:

```text
You're up and running! Both Dapr and your app logs will appear here.
== APP == Saving Order: Order { orderId = 1 }
== APP == Getting Order: Order { orderId = 1 }
== APP == Deleting Order: Order { orderId = 1 }
== APP == Saving Order: Order { orderId = 2 }
== APP == Getting Order: Order { orderId = 2 }
== APP == Deleting Order: Order { orderId = 2 }
== APP == Saving Order: Order { orderId = 3 }
== APP == Getting Order: Order { orderId = 3 }
== APP == Deleting Order: Order { orderId = 3 }
```
```bash
dapr run -f .
```

2. Stop and cleanup application process
3. Stop and clean up application processes

```bash
dapr stop -f
dapr stop -f .
```
<!-- END_STEP -->

## Run a single app at a time with Dapr (Optional)

An alternative to running all or multiple applications at once is to run single apps one-at-a-time using multiple `dapr run .. -- dotnet run` commands. This next section covers how to do this.

### Run the Dotnet service app with Dapr

1. Run the Dotnet service app with Dapr:

<!-- STEP
name: Run order-processor service
expected_stdout_lines:
- '== APP == Getting Order: Order { orderId = 1 }'
- '== APP == Getting Order: Order { orderId = 2 }'
- "Exited App successfully"
expected_stderr_lines:
output_match_mode: substring
background: true
sleep: 15
-->

```bash
cd ./order-processor
dapr run --app-id order-processor --resources-path ../../../resources/ -- dotnet run
Expand All @@ -101,6 +90,6 @@ You're up and running! Both Dapr and your app logs will appear here.
```
2. Stop and clean up application processes
dapr stop --app-id order-processor
dapr stop --app-id order-processor
<!-- END_STEP -->
3 changes: 2 additions & 1 deletion state_management/csharp/sdk/dapr.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@

version: 1
common:
resourcesPath: ../../../resources/
resourcesPath: ../../resources/
apps:
- appID: order-processor
appDirPath: ./order-processor/
command: ["dotnet", "run"]

2 changes: 1 addition & 1 deletion state_management/csharp/sdk/order-processor/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

string DAPR_STORE_NAME = "statestore";
var client = new DaprClientBuilder().Build();
for (int i = 1; i <= 100; i++) {
for (int i = 1; i <= 1; i++) {
var orderId = i;
var order = new Order(orderId);

Expand Down
90 changes: 81 additions & 9 deletions state_management/go/http/README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,104 @@
# Dapr state management (HTTP Client)

In this quickstart, you'll create a microservice to demonstrate Dapr's state management API. The service generates messages to store data in a state store.
In this quickstart, you'll create a microservice to demonstrate Dapr's state management API. The service generates messages to store in a state store. See [Why state management](https://docs.dapr.io/developing-applications/building-blocks/state-management/) to understand when to use this API.

Visit the Dapr documentation on [State Management](https://docs.dapr.io/developing-applications/building-blocks/state-management/) for more information.
Visit [this](https://docs.dapr.io/developing-applications/building-blocks/state-management/) link for more information about Dapr and State Management.

> **Note:** This example leverages plain HTTP. You can find an example using the Dapr Client SDK (recommended) in the [`sdk` folder](../sdk/).
> **Note:** This example leverages HTTP `requests` only. If you are looking for the example using the Dapr Client SDK (recommended) [click here](../sdk/).
This quickstart includes one service: Go client service `order-processor`
This quickstart includes one service: Go client service `order-processor`

### Run Go service with Dapr
## Run all apps with multi-app run template file

1. Run the Go service app with Dapr in the `order-processor` folder:
This section shows how to run applications at once using [multi-app run template files](https://docs.dapr.io/developing-applications/local-development/multi-app-dapr-run/multi-app-overview/) with `dapr run -f .`. This enables to you test the interactions between multiple applications.

Open a new terminal window and run `order-processor` using the multi app run template defined in [dapr.yaml](./dapr.yaml):

1. Run the Go service app with Dapr:

<!-- STEP
name: Run order-processor service
expected_stdout_lines:
- '== APP == Getting Order: Order { orderId = 1 }'
- '== APP == Getting Order: Order { orderId = 2 }'
- "Exited App successfully"
expected_stderr_lines:
output_match_mode: substring
match_order: none
background: true
sleep: 15
timeout_seconds: 30
-->

```bash
dapr run -f .
```

The Terminal console output should look similar to this:

```text
You're up and running! Both Dapr and your app logs will appear here.
== APP == Saving Order: Order { orderId = 1 }
== APP == Getting Order: Order { orderId = 1 }
== APP == Deleting Order: Order { orderId = 1 }
== APP == Saving Order: Order { orderId = 2 }
== APP == Getting Order: Order { orderId = 2 }
== APP == Deleting Order: Order { orderId = 2 }
== APP == Saving Order: Order { orderId = 3 }
== APP == Getting Order: Order { orderId = 3 }
== APP == Deleting Order: Order { orderId = 3 }
```

2. Stop and cleanup application process

```bash
dapr stop -f
```
<!-- END_STEP -->

## Run a single app at a time with Dapr (Optional)

An alternative to running all or multiple applications at once is to run single apps one-at-a-time using multiple `dapr run .. -- go run` commands. This next section covers how to do this.

1. Run the Go service app with Dapr:

<!-- STEP
name: Run order-processor service
expected_stdout_lines:
- '== APP == Retrieved Order: "{\"orderId\":1}"'
- '== APP == Retrieved Order: "{\"orderId\":2}"'
- '== APP == Getting Order: Order { orderId = 1 }'
- '== APP == Getting Order: Order { orderId = 2 }'
- "Exited App successfully"
expected_stderr_lines:
output_match_mode: substring
match_order: none
background: true
sleep: 15
timeout_seconds: 30
-->

```bash
cd ./order-processor
dapr run --app-id order-processor --resources-path ../../../resources -- go run .
dapr run --app-id order-processor --resources-path ../../../resources/ -- go run
```

The Terminal console output should look similar to this:

```text
You're up and running! Both Dapr and your app logs will appear here.
== APP == Saving Order: Order { orderId = 1 }
== APP == Getting Order: Order { orderId = 1 }
== APP == Deleting Order: Order { orderId = 1 }
== APP == Saving Order: Order { orderId = 2 }
== APP == Getting Order: Order { orderId = 2 }
== APP == Deleting Order: Order { orderId = 2 }
== APP == Saving Order: Order { orderId = 3 }
== APP == Getting Order: Order { orderId = 3 }
== APP == Deleting Order: Order { orderId = 3 }
```

2. Stop and clean up application processes
dapr stop --app-id order-processor

<!-- END_STEP -->
9 changes: 9 additions & 0 deletions state_management/go/http/dapr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@

version: 1
common:
resourcesPath: ../../resources/
apps:
- appID: order-processor
appDirPath: ./order-processor/
command: ["go", "run", "."]

Binary file not shown.
Loading

0 comments on commit 92e5b96

Please sign in to comment.