From 2b76d2e644f415916bf18244b7616d7d5330dc6e Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Fri, 25 Feb 2022 12:28:33 -0600 Subject: [PATCH 01/24] manual copy to squash commits Signed-off-by: Hannah Hunter --- daprdocs/content/en/getting-started/_index.md | 14 +- .../getting-started/configure-state-pubsub.md | 243 ------- .../en/getting-started/get-started-api.md | 65 +- .../getting-started/get-started-component.md | 95 --- .../en/getting-started/install-dapr-cli.md | 87 ++- .../getting-started/install-dapr-selfhost.md | 100 +-- .../content/en/getting-started/quickstarts.md | 27 - .../en/getting-started/quickstarts/_index.md | 28 + .../quickstarts/pubsub-quickstart.md | 597 ++++++++++++++++++ .../en/getting-started/tutorials/_index.md | 34 + .../tutorials/configure-state-pubsub.md | 339 ++++++++++ .../tutorials/get-started-component.md | 107 ++++ .../setup-pubsub/pubsub-namespaces.md | 2 +- .../hosting/kubernetes/kubernetes-deploy.md | 2 +- .../docker-containers.png | Bin 0 -> 21405 bytes .../windows-view-components.png | Bin 0 -> 5677 bytes .../pubsub-dotnet-publisher-output.png | Bin 0 -> 30410 bytes .../pubsub-dotnet-subscriber-output.png | Bin 0 -> 36921 bytes .../pubsub-java-publisher-output.png | Bin 0 -> 45870 bytes .../pubsub-java-subscriber-output.png | Bin 0 -> 58856 bytes .../pubsub-js-publisher-output.png | Bin 0 -> 31506 bytes .../pubsub-js-subscriber-output.png | Bin 0 -> 22636 bytes .../pubsub-python-publisher-output.png | Bin 0 -> 27040 bytes .../pubsub-python-subscriber-output.png | Bin 0 -> 23399 bytes 24 files changed, 1267 insertions(+), 473 deletions(-) delete mode 100644 daprdocs/content/en/getting-started/configure-state-pubsub.md delete mode 100644 daprdocs/content/en/getting-started/get-started-component.md delete mode 100644 daprdocs/content/en/getting-started/quickstarts.md create mode 100644 daprdocs/content/en/getting-started/quickstarts/_index.md create mode 100644 daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md create mode 100644 daprdocs/content/en/getting-started/tutorials/_index.md create mode 100644 daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md create mode 100644 daprdocs/content/en/getting-started/tutorials/get-started-component.md create mode 100644 daprdocs/static/images/install-dapr-selfhost/docker-containers.png create mode 100644 daprdocs/static/images/install-dapr-selfhost/windows-view-components.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-dotnet-publisher-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-dotnet-subscriber-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-java-publisher-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-java-subscriber-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-js-publisher-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-js-subscriber-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-python-publisher-output.png create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-python-subscriber-output.png diff --git a/daprdocs/content/en/getting-started/_index.md b/daprdocs/content/en/getting-started/_index.md index 6339d4a5e..80d01b229 100644 --- a/daprdocs/content/en/getting-started/_index.md +++ b/daprdocs/content/en/getting-started/_index.md @@ -3,24 +3,18 @@ type: docs title: "Getting started with Dapr" linkTitle: "Getting started" weight: 20 -description: "How to get up and running with Dapr in minutes" -no_list: true +description: "Get up and running with Dapr in minutes" --- Welcome to the Dapr getting started guide! {{% alert title="Dapr Concepts" color="primary" %}} -If you are looking for an introductory overview of Dapr and learn more about basic Dapr terminology, it is recommended to visit the [concepts section]({{}}). +If you are looking for an introductory overview of Dapr and learn more about basic Dapr terminology, we recommend starting with the [concepts section]({{}}). {{% /alert %}} -This guide will walk you through a series of steps to install, initialize and start using Dapr. The recommended way to get started with Dapr is to setup a local development environment (also referred to as [_self-hosted_ mode]({{< ref self-hosted >}})) which includes the Dapr CLI, Dapr sidecar binaries, and some default components that can help you start using Dapr quickly. +Our getting started guide will walk you through a series of steps to install, initialize, experiment with, and start using Dapr. -The following steps in this guide are: -1. Install the Dapr CLI -1. Initialize Dapr -1. Use the Dapr API -1. Configure a component -1. Explore Dapr quickstarts +
{{< button text="First step: Install the Dapr CLI >>" page="install-dapr-cli" >}}

\ No newline at end of file diff --git a/daprdocs/content/en/getting-started/configure-state-pubsub.md b/daprdocs/content/en/getting-started/configure-state-pubsub.md deleted file mode 100644 index d227166dc..000000000 --- a/daprdocs/content/en/getting-started/configure-state-pubsub.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -type: docs -title: "How-To: Configure state store and pub/sub message broker" -linkTitle: "(optional) Configure state & pub/sub" -weight: 80 -description: "Configure state store and pub/sub message broker components for Dapr" -aliases: - - /getting-started/configure-redis/ ---- - -In order to get up and running with the state and pub/sub building blocks two components are needed: - -1. A state store component for persistence and restoration -2. As pub/sub message broker component for async-style message delivery - -A full list of supported components can be found here: -- [Supported state stores]({{< ref supported-state-stores >}}) -- [Supported pub/sub message brokers]({{< ref supported-pubsub >}}) - -The rest of this page describes how to get up and running with Redis. - -{{% alert title="Self-hosted mode" color="warning" %}} -When initialized in self-hosted mode, Dapr automatically runs a Redis container and sets up the required component yaml files. You can skip this page and go to [next steps](#next-steps) -{{% /alert %}} - -## Create a Redis store - -Dapr can use any Redis instance - either containerized on your local dev machine or a managed cloud service. If you already have a Redis store, move on to the [configuration](#configure-dapr-components) section. - -{{< tabs "Self-Hosted" "Kubernetes" "Azure" "AWS" "GCP" >}} - -{{% codetab %}} -Redis is automatically installed in self-hosted environments by the Dapr CLI as part of the initialization process. You are all set and can skip to the [next steps](#next-steps) -{{% /codetab %}} - -{{% codetab %}} -You can use [Helm](https://helm.sh/) to quickly create a Redis instance in our Kubernetes cluster. This approach requires [Installing Helm v3](https://github.com/helm/helm#install). - -1. Install Redis into your cluster: - - ```bash - helm repo add bitnami https://charts.bitnami.com/bitnami - helm repo update - helm install redis bitnami/redis - ``` - - Note that you will need a Redis version greater than 5, which is what Dapr's pub/sub functionality requires. If you're intending on using Redis as just a state store (and not for pub/sub) a lower version can be used. - -2. Run `kubectl get pods` to see the Redis containers now running in your cluster: - - ```bash - $ kubectl get pods - NAME READY STATUS RESTARTS AGE - redis-master-0 1/1 Running 0 69s - redis-replicas-0 1/1 Running 0 69s - redis-replicas-1 1/1 Running 0 22s - ``` - -Note that the hostname is `redis-master.default.svc.cluster.local:6379`, and a Kubernetes secret, `redis`, is created automatically. - -{{% /codetab %}} - -{{% codetab %}} -This method requires having an Azure Subscription. - -1. Open the [Azure Portal](https://ms.portal.azure.com/#create/Microsoft.Cache) to start the Azure Redis Cache creation flow. Log in if necessary. -1. Fill out the necessary information - - Dapr pub/sub uses [Redis streams](https://redis.io/topics/streams-intro) that was introduced by Redis 5.0. If you would like to use Azure Redis Cache for pub/sub make sure to set the version to (PREVIEW) 6. -1. Click "Create" to kickoff deployment of your Redis instance. -1. You'll need the hostname of your Redis instance, which you can retrieve from the "Overview" in Azure. It should look like `xxxxxx.redis.cache.windows.net:6380`. Note this for later. -1. Once your instance is created, you'll need to grab your access key. Navigate to "Access Keys" under "Settings" and create a Kubernetes secret to store your Redis password: - ```bash - kubectl create secret generic redis --from-literal=redis-password=********* - ``` - -{{% /codetab %}} - -{{% codetab %}} -1. Visit [AWS Redis](https://aws.amazon.com/redis/) to deploy a Redis instance -1. Note the Redis hostname in the AWS portal for use later -1. Create a Kubernetes secret to store your Redis password: - ```bash - kubectl create secret generic redis --from-literal=redis-password=********* - ``` -{{% /codetab %}} - -{{% codetab %}} -1. Visit [GCP Cloud MemoryStore](https://cloud.google.com/memorystore/) to deploy a MemoryStore instance -1. Note the Redis hostname in the GCP portal for use later -1. Create a Kubernetes secret to store your Redis password: - ```bash - kubectl create secret generic redis --from-literal=redis-password=********* - ``` -{{% /codetab %}} - -{{< /tabs >}} - -## Configure Dapr components - -Dapr uses components to define what resources to use for building block functionality. These steps go through how to connect the resources you created above to Dapr for state and pub/sub. - -In self-hosted mode, component files are automatically created under: -- **Windows**: `%USERPROFILE%\.dapr\components\` -- **Linux/MacOS**: `$HOME/.dapr/components` - -For Kubernetes, files can be created in any directory, as they are applied with `kubectl`. - -### Create State store component - -Create a file named `redis-state.yaml`, and paste the following: - -```yaml -apiVersion: dapr.io/v1alpha1 -kind: Component -metadata: - name: statestore - namespace: default -spec: - type: state.redis - version: v1 - metadata: - - name: redisHost - value: - - name: redisPassword - secretKeyRef: - name: redis - key: redis-password - # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) - # - name: enableTLS - # value: true -``` - -This example uses the kubernetes secret that was created when setting up a cluster with the above instructions. - -{{% alert title="Other stores" color="primary" %}} -If using a state store other than Redis, refer to the [supported state stores]({{< ref supported-state-stores >}}) for information on what options to set. -{{% /alert %}} - -### Create Pub/sub message broker component - -Create a file called redis-pubsub.yaml, and paste the following: - -```yaml -apiVersion: dapr.io/v1alpha1 -kind: Component -metadata: - name: pubsub - namespace: default -spec: - type: pubsub.redis - version: v1 - metadata: - - name: redisHost - value: - - name: redisPassword - secretKeyRef: - name: redis - key: redis-password - # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) - # - name: enableTLS - # value: true -``` - -This example uses the kubernetes secret that was created when setting up a cluster with the above instructions. - -{{% alert title="Other stores" color="primary" %}} -If using a pub/sub message broker other than Redis, refer to the [supported pub/sub message brokers]({{< ref supported-pubsub >}}) for information on what options to set. -{{% /alert %}} - -### Hard coded passwords (not recommended) - -For development purposes only you can skip creating kubernetes secrets and place passwords directly into the Dapr component file: - -```yaml -apiVersion: dapr.io/v1alpha1 -kind: Component -metadata: - name: statestore - namespace: default -spec: - type: state.redis - version: v1 - metadata: - - name: redisHost - value: - - name: redisPassword - value: - # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) - # - name: enableTLS - # value: true -``` - -```yaml -apiVersion: dapr.io/v1alpha1 -kind: Component -metadata: - name: pubsub - namespace: default -spec: - type: pubsub.redis - version: v1 - metadata: - - name: redisHost - value: - - name: redisPassword - value: - # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) - # - name: enableTLS - # value: true -``` - -## Apply the configuration - -{{< tabs "Self-Hosted" "Kubernetes">}} - -{{% codetab %}} - -By default the Dapr CLI creates a local Redis instance when you run `dapr init`. However, if you want to configure a different Redis instance you can either: -- Update the existing component files or create new ones in the default components directory - - **Linux/MacOS:** `$HOME/.dapr/components` - - **Windows:** `%USERPROFILE%\.dapr\components` -- Create a new `components` directory in your app folder containing the YAML files and provide the path to the `dapr run` command with the flag `--components-path` - -{{% alert title="Self-hosted slim mode" color="primary" %}} -If you initialized Dapr in [slim mode]({{< ref self-hosted-no-docker.md >}}) (without Docker) you need to manually create the default directory, or always specify a components directory using `--components-path`. -{{% /alert %}} - -{{% /codetab %}} - -{{% codetab %}} - -Run `kubectl apply -f ` for both state and pubsub files: - -```bash -kubectl apply -f redis-state.yaml -kubectl apply -f redis-pubsub.yaml -``` -{{% /codetab %}} - -{{< /tabs >}} - -## Next steps -- [Try out a Dapr quickstart]({{< ref quickstarts.md >}}) diff --git a/daprdocs/content/en/getting-started/get-started-api.md b/daprdocs/content/en/getting-started/get-started-api.md index f26919738..8f3c6aba1 100644 --- a/daprdocs/content/en/getting-started/get-started-api.md +++ b/daprdocs/content/en/getting-started/get-started-api.md @@ -3,27 +3,40 @@ type: docs title: "Use the Dapr API" linkTitle: "Use the Dapr API" weight: 30 +description: "Run a Dapr sidecar and try out the state API" --- -After running the `dapr init` command in the [previous step]({{}}), your local environment has the Dapr sidecar binaries as well as default component definitions for both state management and a message broker (both using Redis). You can now try out some of what Dapr has to offer by using the Dapr CLI to run a Dapr sidecar and try out the state API that will allow you to store and retrieve a state. You can learn more about the state building block and how it works in [these docs]({{< ref state-management >}}). +Running [`dapr init`]({{}}) loads your local environment with: -You will now run the sidecar and call the API directly (simulating what an application would do). +- The Dapr sidecar binaries. +- Default Redis component definitions for both: + - State management, and + - A message broker. -## Step 1: Run the Dapr sidecar +With this setup, you can run a Dapr sidecar with the Dapr CLI and try out the state API to store and retrieve a state. [Learn more about the state building block and how it works in our concept docs]({{< ref state-management >}}). -One of the most useful Dapr CLI commands is [`dapr run`]({{< ref dapr-run.md >}}). This command launches an application together with a sidecar. For the purpose of this tutorial you'll run the sidecar without an application. +In this guide, you will simulate an application by running the sidecar and calling the API directly. For the purpose of this tutorial you'll run the sidecar without an application. -Run the following command to launch a Dapr sidecar that will listen on port 3500 for a blank application named myapp: +### Step 1: Run the Dapr sidecar + +One of the most useful Dapr CLI commands is [`dapr run`]({{< ref dapr-run.md >}}). This command launches an application, together with a sidecar. + +Launch a Dapr sidecar that will listen on port 3500 for a blank application named `myapp`: ```bash dapr run --app-id myapp --dapr-http-port 3500 ``` -With this command, no custom component folder was defined, so Dapr uses the default component definitions that were created during the init flow (these can be found under `$HOME/.dapr/components` on Linux or MacOS and under `%USERPROFILE%\.dapr\components` on Windows). These tell Dapr to use the local Redis Docker container as a state store and message broker. +Since no custom component folder was defined with the above command, Dapr uses the default component definitions created during the [`dapr init` flow]({{< ref install-dapr-selfhost.md >}}), found: -## Step 2: Save state +- On Windows, under `%UserProfile%\.dapr\components` +- On Linux/MacOS, under `~/.dapr/components` -We will now update the state with an object. The new state will look like this: +These tell Dapr to use the local Redis Docker container as a state store and message broker. + +### Step 2: Save state + +Update the state with an object. The new state will look like this: ```json [ @@ -36,7 +49,7 @@ We will now update the state with an object. The new state will look like this: Notice, the object contained in the state has a `key` assigned with the value `name`. You will use the key in the next step. -Run the command shown below to store the new state. +Store the new state using the following command: {{< tabs "HTTP API (Bash)" "HTTP API (PowerShell)">}} {{% codetab %}} @@ -55,45 +68,46 @@ Invoke-RestMethod -Method Post -ContentType 'application/json' -Body '[{ "key": {{< /tabs >}} -## Step 3: Get state +### Step 3: Get state -Now get the object you just stored in the state by using the state management API with the key `name`: +Retrieve the object you just stored in the state by using the state management API with the key `name`. Run the following code with the same Dapr instance you ran earlier. : {{< tabs "HTTP API (Bash)" "HTTP API (PowerShell)">}} {{% codetab %}} -With the same Dapr instance running from above run: + ```bash curl http://localhost:3500/v1.0/state/statestore/name ``` + {{% /codetab %}} {{% codetab %}} -With the same Dapr instance running from above run: + ```powershell Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/state/statestore/name' ``` + {{% /codetab %}} {{< /tabs >}} -## Step 4: See how the state is stored in Redis +### Step 4: See how the state is stored in Redis -You can look in the Redis container and verify Dapr is using it as a state store. Run the following to use the Redis CLI: +Look in the Redis container and verify Dapr is using it as a state store. Use the Redis CLI with the following command: ```bash docker exec -it dapr_redis redis-cli ``` -List the redis keys to see how Dapr created a key value pair (with the app-id you provided to `dapr run` as a prefix to the key): +List the Redis keys to see how Dapr created a key value pair with the app-id you provided to `dapr run` as the key's prefix: ```bash keys * ``` -``` -1) "myapp||name" -``` +**Output:** +`1) "myapp||name"` View the state value by running: @@ -101,12 +115,11 @@ View the state value by running: hgetall "myapp||name" ``` -``` -1) "data" -2) "\"Bruce Wayne\"" -3) "version" -4) "1" -``` +**Output:** +`1) "data"` +`2) "\"Bruce Wayne\""` +`3) "version"` +`4) "1"` Exit the redis-cli with: @@ -114,4 +127,4 @@ Exit the redis-cli with: exit ``` -{{< button text="Next step: Define a component >>" page="get-started-component" >}} +{{< button text="Next step: Dapr Quickstarts >>" page="getting-started/quickstarts" >}} \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/get-started-component.md b/daprdocs/content/en/getting-started/get-started-component.md deleted file mode 100644 index a8e05dc5a..000000000 --- a/daprdocs/content/en/getting-started/get-started-component.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -type: docs -title: "Define a component" -linkTitle: "Define a component" -weight: 40 ---- - -In the [previous step]({{}}) you called the Dapr HTTP API to store and retrieve a state from a Redis backed state store. Dapr knew to use the Redis instance that was configured locally on your machine through default component definition files that were created when Dapr was initialized. - -When building an app, you most likely would create your own component file definitions depending on the building block and specific component that you'd like to use. - -As an example of how to define custom components for your application, you will now create a component definition file to interact with the [secrets building block]({{< ref secrets >}}). - -In this guide you will: -- Create a local JSON secret store -- Register the secret store with Dapr using a component definition file -- Obtain the secret using the Dapr HTTP API - -## Step 1: Create a JSON secret store - -While Dapr supports [many types of secret stores]({{< ref supported-secret-stores >}}), the easiest way to get started is a local JSON file with your secret (note this secret store is meant for development purposes and is not recommended for production use cases as it is not secured). - -Begin by saving the following JSON contents into a file named `mysecrets.json`: - -```json -{ - "my-secret" : "I'm Batman" -} -``` - -## Step 2: Create a secret store Dapr component - -Create a new directory named `my-components` to hold the new component file: - -```bash -mkdir my-components -``` - -Inside this directory create a new file `localSecretStore.yaml` with the following contents: - - -```yaml -apiVersion: dapr.io/v1alpha1 -kind: Component -metadata: - name: my-secret-store - namespace: default -spec: - type: secretstores.local.file - version: v1 - metadata: - - name: secretsFile - value: /mysecrets.json - - name: nestedSeparator - value: ":" -``` - -You can see that the above file definition has a `type: secretstores.local.file` which tells Dapr to use the local file component as a secret store. The metadata fields provide component specific information needed to work with this component (in this case, the path to the secret store JSON is relative to where you call `dapr run` from.) - -## Step 3: Run the Dapr sidecar - -Run the following command to launch a Dapr sidecar that will listen on port 3500 for a blank application named myapp: - -```bash -dapr run --app-id myapp --dapr-http-port 3500 --components-path ./my-components -``` - -> If you encounter a error message stating the app ID is already in use, it may be that the sidecar you ran in the previous step is still running. Make sure you stop the sidecar before running the above command (e.g. using "Control-C"). - -## Step 4: Get a secret - -In a separate terminal run: - -{{< tabs "HTTP API (Bash)" "HTTP API (PowerShell)">}} -{{% codetab %}} - -```bash -curl http://localhost:3500/v1.0/secrets/my-secret-store/my-secret -``` -{{% /codetab %}} - -{{% codetab %}} -```powershell -Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/secrets/my-secret-store/my-secret' -``` -{{% /codetab %}} -{{< /tabs >}} - -You should see output with the secret you stored in the JSON file. - -```json -{"my-secret":"I'm Batman"} -``` - -{{< button text="Next step: Explore Dapr quickstarts >>" page="quickstarts" >}} diff --git a/daprdocs/content/en/getting-started/install-dapr-cli.md b/daprdocs/content/en/getting-started/install-dapr-cli.md index ab571330c..2bfab98c0 100644 --- a/daprdocs/content/en/getting-started/install-dapr-cli.md +++ b/daprdocs/content/en/getting-started/install-dapr-cli.md @@ -3,100 +3,131 @@ type: docs title: "Install the Dapr CLI" linkTitle: "Install Dapr CLI" weight: 10 +description: "Install the Dapr CLI as the main tool for running Dapr-related tasks" --- -The Dapr CLI is the main tool you'll be using for various Dapr related tasks. You can use it to run an application with a Dapr sidecar, as well as review sidecar logs, list running services, and run the Dapr dashboard. The Dapr CLI works with both [self-hosted]({{< ref self-hosted >}}) and [Kubernetes]({{< ref Kubernetes >}}) environments. +You'll use the Dapr CLI as the main tool for various Dapr-related tasks. You can use it to: -Begin by downloading and installing the Dapr CLI: +- Run an application with a Dapr sidecar. +- Review sidecar logs. +- List running services. +- Run the Dapr dashboard. + +The Dapr CLI works with both [self-hosted]({{< ref self-hosted >}}) and [Kubernetes]({{< ref Kubernetes >}}) environments. + +### Step 1: Install the Dapr CLI {{< tabs Linux Windows MacOS Binaries>}} {{% codetab %}} -### Install from Terminal -This command installs the latest linux Dapr CLI to `/usr/local/bin`: +#### Install from Terminal + +Install the latest Linux Dapr CLI to `/usr/local/bin`: + ```bash wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash ``` -### Install without `sudo` -If you do not have access to the `sudo` command or your username is not in the `sudoers` file you can install Dapr to an alternate directory via the `DAPR_INSTALL_DIR` environment variable. +#### Install without `sudo` + +If you do not have access to the `sudo` command or your username is not in the `sudoers` file, you can install Dapr to an alternate directory via the `DAPR_INSTALL_DIR` environment variable. ```bash wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | DAPR_INSTALL_DIR="$HOME/dapr" /bin/bash ``` + {{% /codetab %}} {{% codetab %}} -### Install from Command Prompt -This Command Prompt command installs the latest windows Dapr cli to `C:\dapr` and adds this directory to User PATH environment variable. + +#### Install from Command Prompt + +Install the latest windows Dapr cli to `C:\dapr` and add this directory to the User PATH environment variable: + ```powershell powershell -Command "iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1 | iex" ``` -### Install without administrative rights -If you do not have admin rights you can install Dapr to an alternate directory via the `DAPR_INSTALL_DIR` environment variable. +#### Install without administrative rights + +If you do not have admin rights, you can install Dapr to an alternate directory via the `DAPR_INSTALL_DIR` environment variable. ```powershell $script=iwr -useb https://raw.githubusercontent.com/dapr/cli/master/install/install.ps1; $block=[ScriptBlock]::Create($script); invoke-command -ScriptBlock $block -ArgumentList "", "$HOME/dapr" ``` + {{% /codetab %}} {{% codetab %}} + ### Install from Terminal -This command installs the latest darwin Dapr CLI to `/usr/local/bin`: + +Install the latest Darwin Dapr CLI to `/usr/local/bin`: + ```bash curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | /bin/bash ``` -#### Note for ARM64 Macs -Support for ARM64 Macs is available as a Preview feature. When installing from the terminal, native ARM64 binaries are downloaded when available. For older releases, AMD64 binaries are downloaded, which must be run with Rosetta2 emulation enabled. To install Rosetta emulation: + +**For ARM64 Macs:** + +ARM64 Macs support is available as a *preview feature*. When installing from the terminal, native ARM64 binaries are downloaded once available. For older releases, AMD64 binaries are downloaded and must be run with Rosetta2 emulation enabled. + +To install Rosetta emulation: + ```bash softwareupdate --install-rosetta ``` -### Install from Homebrew -You can install via [Homebrew](https://brew.sh): +#### Install from Homebrew + +Install via [Homebrew](https://brew.sh): + ```bash brew install dapr/tap/dapr-cli ``` -#### Note for ARM64 Macs +**For ARM64 Macs:** + For ARM64 Macs, only Homebrew 3.0 and higher versions are supported. Please update Homebrew to 3.0.0 or higher and then run the command below: ```bash arch -arm64 brew install dapr/tap/dapr-cli ``` -### Install without `sudo` -If you do not have access to the `sudo` command or your username is not in the `sudoers` file you can install Dapr to an alternate directory via the `DAPR_INSTALL_DIR` environment variable. +#### Install without `sudo` +If you do not have access to the `sudo` command or your username is not in the `sudoers` file, you can install Dapr to an alternate directory via the `DAPR_INSTALL_DIR` environment variable. ```bash curl -fsSL https://raw.githubusercontent.com/dapr/cli/master/install/install.sh | DAPR_INSTALL_DIR="$HOME/dapr" /bin/bash ``` + {{% /codetab %}} {{% codetab %}} -Each release of Dapr CLI includes various OSes and architectures. These binary versions can be manually downloaded and installed. +Each release of Dapr CLI includes various OSes and architectures. You can manually download and install these binary versions. -1. Download the desired Dapr CLI from the latest [Dapr Release](https://github.com/dapr/cli/releases) -2. Unpack it (e.g. dapr_linux_amd64.tar.gz, dapr_windows_amd64.zip) +1. Download the desired Dapr CLI from the latest [Dapr Release](https://github.com/dapr/cli/releases). +2. Unpack it (e.g. dapr_linux_amd64.tar.gz, dapr_windows_amd64.zip). 3. Move it to your desired location. - - For Linux/MacOS `/usr/local/bin` is recommended. - - For Windows, create a directory and add this to your System PATH. For example create a directory called `C:\dapr` and add this directory to your User PATH, by editing your system environment variable. -{{% /codetab %}} -{{< /tabs >}} + - For Linux/MacOS, we recommend `/usr/local/bin`. + - For Windows, create a directory and add this to your System PATH. For example: + - Create a directory called `C:\dapr`. + - Add your newly created directory to your User PATH, by editing your system environment variable. +{{% /codetab %}} + +{{< /tabs >}} ### Step 2: Verify the installation -You can verify the CLI is installed by restarting your terminal/command prompt and running the following: +Verify the CLI is installed by restarting your terminal/command prompt and running the following: ```bash dapr ``` -The output should look like this: - +**Output:** ```md __ diff --git a/daprdocs/content/en/getting-started/install-dapr-selfhost.md b/daprdocs/content/en/getting-started/install-dapr-selfhost.md index b9d0e3604..7101808bb 100644 --- a/daprdocs/content/en/getting-started/install-dapr-selfhost.md +++ b/daprdocs/content/en/getting-started/install-dapr-selfhost.md @@ -3,38 +3,52 @@ type: docs title: "Initialize Dapr in your local environment" linkTitle: "Init Dapr locally" weight: 20 +description: "Fetch the Dapr sidecar binaries and install them locally using `dapr-init`" aliases: - - /getting-started/install-dapr/ + - /getting-started/set-up-dapr/install-dapr/ --- -Now that you have the [Dapr CLI installed]({{}}), it's time to initialize Dapr on your local machine using the CLI. +Now that you've [installed the Dapr CLI]({{}}), use the CLI to initialize Dapr on your local machine. -Dapr runs as a sidecar alongside your application, and in self-hosted mode this means it is a process on your local machine. Therefore, initializing Dapr includes fetching the Dapr sidecar binaries and installing them locally. +Dapr runs as a sidecar alongside your application. In self-hosted mode, this means it is a process on your local machine. By initializing Dapr, you: -In addition, the default initialization process also creates a development environment that helps streamline application development with Dapr. This includes the following steps: +- Fetch and install the Dapr sidecar binaries locally. +- Create a development environment that streamlines application development with Dapr. -1. Running a **Redis container instance** to be used as a local state store and message broker -1. Running a **Zipkin container instance** for observability -1. Creating a **default components folder** with component definitions for the above -1. Running a **Dapr placement service container instance** for local actor support +Dapr initialization includes: + +1. Running a **Redis container instance** to be used as a local state store and message broker. +1. Running a **Zipkin container instance** for observability. +1. Creating a **default components folder** with component definitions for the above. +1. Running a **Dapr placement service container instance** for local actor support. {{% alert title="Docker" color="primary" %}} -This recommended development environment requires [Docker](https://docs.docker.com/install/). It is possible to initialize Dapr without a dependency on Docker (see [this guidance]({{}})) but next steps in this guide assume the recommended development environment. +The recommended development environment requires [Docker](https://docs.docker.com/install/). While you can [initialize Dapr without a dependency on Docker]({{}})), the next steps in this guide assume the recommended Docker development environment. {{% /alert %}} ### Step 1: Open an elevated terminal - {{< tabs "Linux/MacOS" "Windows">}} +{{< tabs "Linux/MacOS" "Windows">}} - {{% codetab %}} - If you run your Docker commands with sudo, or the install path is `/usr/local/bin` (default install path), you will need to use `sudo` below. - {{% /codetab %}} +{{% codetab %}} - {{% codetab %}} - Make sure that you run Command Prompt as administrator (right click, run as administrator) - {{% /codetab %}} +You will need to use `sudo` for this quickstart if: - {{< /tabs >}} +- You run your Docker commands with `sudo`, or +- The install path is `/usr/local/bin` (default install path). + +{{% /codetab %}} + +{{% codetab %}} + +Run Windows Terminal or command prompt as administrator. + +1. Right click on the Windows Terminal or command prompt icon. +1. Select **Run as administrator**. + +{{% /codetab %}} + +{{< /tabs >}} ### Step 2: Run the init CLI command @@ -50,63 +64,65 @@ dapr init dapr --version ``` -Output should look like this: -``` -CLI version: {{% dapr-latest-version cli="true" %}} -Runtime version: {{% dapr-latest-version long="true" %}} -``` +**Output:** + +`CLI version: {{% dapr-latest-version cli="true" %}}`
+`Runtime version: {{% dapr-latest-version long="true" %}}` ### Step 4: Verify containers are running -As mentioned above, the `dapr init` command launches several containers that will help you get started with Dapr. Verify this by running: +As mentioned earlier, the `dapr init` command launches several containers that will help you get started with Dapr. Verify you have container instances with `daprio/dapr`, `openzipkin/zipkin`, and `redis` images running: ```bash docker ps ``` -Make sure that instances with `daprio/dapr`, `openzipkin/zipkin`, and `redis` images are all running: +**Output:** -``` -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -0dda6684dc2e openzipkin/zipkin "/busybox/sh run.sh" 2 minutes ago Up 2 minutes 9410/tcp, 0.0.0.0:9411->9411/tcp dapr_zipkin -9bf6ef339f50 redis "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp dapr_redis -8d993e514150 daprio/dapr "./placement" 2 minutes ago Up 2 minutes 0.0.0.0:6050->50005/tcp dapr_placement -``` + ### Step 5: Verify components directory has been initialized -On `dapr init`, the CLI also creates a default components folder which includes several YAML files with definitions for a state store, pub/sub and zipkin. These will be read by the Dapr sidecar, telling it to use the Redis container for state management and messaging and the Zipkin container for collecting traces. +On `dapr init`, the CLI also creates a default components folder that contains several YAML files with definitions for a state store, Pub/sub, and Zipkin. The Dapr sidecar will read these components and use: -- In Linux/MacOS Dapr is initialized with default components and files in `$HOME/.dapr`. -- For Windows Dapr is initialized to `%USERPROFILE%\.dapr\` +- The Redis container for state management and messaging. +- The Zipkin container for collecting traces. +Verify by opening your components directory: + +- On Windows, under `%UserProfile%\.dapr` +- On Linux/MacOS, under `~/.dapr` {{< tabs "Linux/MacOS" "Windows">}} {{% codetab %}} -Run: + ```bash ls $HOME/.dapr ``` -You should see: -``` -bin components config.yaml -``` +**Output:** + +`bin components config.yaml` + +
+ {{% /codetab %}} {{% codetab %}} -Using Command Prompt (not PowerShell), open `%USERPROFILE%\.dapr\` in file explorer: ```powershell explorer "%USERPROFILE%\.dapr\" ``` -You will see the Dapr config, Dapr binaries directory, and the default components directory for Dapr: +**Result:** + + - {{% /codetab %}} {{< /tabs >}} -{{< button text="Next step: Use the Dapr API >>" page="get-started-api" >}} +
+ +{{< button text="Next step: Try Dapr quickstarts >>" page="getting-started/_index.md" >}} \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/quickstarts.md b/daprdocs/content/en/getting-started/quickstarts.md deleted file mode 100644 index ab257b1be..000000000 --- a/daprdocs/content/en/getting-started/quickstarts.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -type: docs -title: "Try out Dapr quickstarts to learn core concepts" -linkTitle: "Dapr Quickstarts" -weight: 60 -description: "Tutorials with code samples that are aimed to get you started quickly with Dapr" ---- - -The [Dapr Quickstarts](https://github.com/dapr/quickstarts/tree/v1.5.0) are a collection of tutorials with code samples that are aimed to get you started quickly with Dapr, each highlighting a different Dapr capability. - -- A good place to start is the hello-world quickstart, it demonstrates how to run Dapr in standalone mode locally on your machine and demonstrates state management and service invocation in a simple application. -- Next, if you are familiar with Kubernetes and want to see how to run the same application in a Kubernetes environment, look for the hello-kubernetes quickstart. Other quickstarts such as pub-sub, bindings and the distributed-calculator quickstart explore different Dapr capabilities include instructions for running both locally and on Kubernetes and can be completed in any order. A full list of the quickstarts can be found below. -- At anytime, you can explore the Dapr documentation or SDK specific samples and come back to try additional quickstarts. -- When you're done, consider exploring the [Dapr samples repository](https://github.com/dapr/samples) for additional code samples contributed by the community that show more advanced or specific usages of Dapr. - -## Quickstarts - -| Quickstart | Description | -|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Hello World](https://github.com/dapr/quickstarts/tree/v1.6.0/hello-world) | Demonstrates how to run Dapr locally. Highlights service invocation and state management. | -| [Hello Kubernetes](https://github.com/dapr/quickstarts/tree/v1.6.0/hello-kubernetes) | Demonstrates how to run Dapr in Kubernetes. Highlights service invocation and state management. | -| [Distributed Calculator](https://github.com/dapr/quickstarts/tree/v1.6.0/distributed-calculator) | Demonstrates a distributed calculator application that uses Dapr services to power a React web app. Highlights polyglot (multi-language) programming, service invocation and state management. | -| [Pub/Sub](https://github.com/dapr/quickstarts/tree/v1.6.0/pub-sub) | Demonstrates how to use Dapr to enable pub-sub applications. Uses Redis as a pub-sub component. | -| [Bindings](https://github.com/dapr/quickstarts/tree/v1.6.0/bindings) | Demonstrates how to use Dapr to create input and output bindings to other components. Uses bindings to Kafka. | -| [Observability](https://github.com/dapr/quickstarts/tree/v1.6.0/observability) | Demonstrates Dapr tracing capabilities. Uses Zipkin as a tracing component. | -| [Secret Store](https://github.com/dapr/quickstarts/tree/v1.6.0/secretstore) | Demonstrates the use of Dapr Secrets API to access secret stores. | - diff --git a/daprdocs/content/en/getting-started/quickstarts/_index.md b/daprdocs/content/en/getting-started/quickstarts/_index.md new file mode 100644 index 000000000..70945da35 --- /dev/null +++ b/daprdocs/content/en/getting-started/quickstarts/_index.md @@ -0,0 +1,28 @@ +--- +type: docs +title: "Dapr Quickstarts" +linkTitle: "Dapr Quickstarts" +weight: 70 +description: "Try out Dapr quickstarts with code samples that are aimed to get you started quickly with Dapr" +no_list: true +--- + +Hit the ground running with our Dapr quickstarts, complete with code samples aimed to get you started quickly with Dapr. + +{{% alert title="Note" color="primary" %}} + We are actively working on adding to our quickstart library. In the meantime, you can explore Dapr through our [tutorials]({{< ref "getting-started/tutorials/_index.md" >}}). + +{{% /alert %}} + + +#### Before you begin + +- [Set up your local Dapr environment]({{< ref "install-dapr-cli.md" >}}). + +## Quickstarts + +| Quickstarts | Description | +|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | +| State Management | Coming soon. | +| Service Invocation | Coming soon. | \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md new file mode 100644 index 000000000..35c59d204 --- /dev/null +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -0,0 +1,597 @@ +--- +type: docs +title: "Quickstart: Publish and Subscribe" +linkTitle: "Publish and Subscribe" +weight: 70 +description: "Get started with Dapr's Publish and Subscribe building block" +--- + +Let's take a look at Dapr's [Publish and Subscribe (Pub/sub) building block]({{< ref pubsub >}}). In this quickstart, you will run a publisher microservice and a subscriber microservice to demonstrate how Dapr enables a Pub/sub pattern. + +1. Using a publisher service, developers can repeatedly publish messages to a topic. +1. [A Pub/sub component](https://docs.dapr.io/concepts/components-concept/#pubsub-brokers) queues or brokers those messages. Our example below uses Redis, you can use RabbitMQ, Kafka, etc. +1. The subscriber to that topic pulls messages from the queue and processes them. + +Select your preferred language-specific Dapr SDK before proceeding with the quickstart. + +{{< tabs "Python" "JavaScript" ".NET" "Java" >}} + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [Python 3.7+ installed](https://www.python.org/downloads/). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Step 2: Publish a topic + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd pub_sub/python/sdk/checkout +``` + +Install the dependencies: + +```bash +pip3 install -r requirements.txt +``` + +Run the `checkout` publisher service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --components-path ../components -- python3 app.py +``` + +In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: + +```python +while True: + order = {'orderid': random.randint(1, 1000)} + + with DaprClient() as client: + # Publish an event/message using Dapr PubSub + result = client.publish_event( + pubsub_name='order_pub_sub', + topic_name='orders', + data=json.dumps(order), + data_content_type='application/json', + ) +``` + +### Step 3: Subscribe to topics + +In a new terminal window, navigate to the `order-processor` directory. + +```bash +cd pub_sub/python/sdk/order-processor +``` + +Install the dependencies: + +```bash +pip3 install -r requirements.txt +``` + +Run the `order-processor` subscriber service alongside a Dapr sidecar. + +```bash +dapr run --app-id order-processor --app-port 5001 --components-path ../../components -- python3 app.py +``` + +In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. + +```py +# Register Dapr pub/sub subscriptions +@app.route('/dapr/subscribe', methods=['GET']) +def subscribe(): + subscriptions = [{ + 'pubsubname': 'order_pub_sub', + 'topic': 'orders', + 'route': 'orders' + }] + print('Dapr pub/sub is subscribed to: ' + json.dumps(subscriptions)) + return jsonify(subscriptions) + + +# Dapr subscription in /dapr/subscribe sets up this route +@app.route('/orders', methods=['POST']) +def orders_subscriber(): + event = from_http(request.headers, request.get_data()) + print('Subscriber received : ' + event.data['orderid'], flush=True) + return json.dumps({'success': True}), 200, { + 'ContentType': 'application/json'} + + +app.run(port=5001) +``` + +### Step 4: View the Pub/sub outputs + +Notice, as specified in the code above, the publisher pushes a random number to the Dapr sidecar while the subscriber receives it. + +Publisher output: + + + +Subscriber output: + + + +#### `pubsub.yaml` component file + +When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: + +- On Windows, under `%UserProfile%\.dapr\components\pubsub.yaml` +- On Linux/MacOS, under `~/.dapr/components/pubsub.yaml` + +With the `pubsub.yaml` component, you can easily swap out underlying components without application code changes. + +The Redis `pubsub.yaml` file included for this quickstart contains the following: + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: order_pub_sub +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + value: "" +``` + +In the YAML file: + +- `metadata/name` is how your application talks to the component. +- `spec/metadata` defines the connection to the instance of the component. +- `scopes` specify which application can use the component. + +{{% /codetab %}} + + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [Latest Node.js installed](https://nodejs.org/en/download/). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've set up: + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Step 2: Publish a topic + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd pub_sub/javascript/sdk/checkout +``` + +Install dependencies, which will include the `dapr-client` package from the JavaScript SDK: + +```bash +npm install +``` + +Verify you have the following files included in the service directory: + +- `package.json` +- `package-lock.json` + +Run the `checkout` publisher service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 --components-path ../../../components -- npm run start +``` + +In the `checkout` publisher service, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: + +```js +await client.pubsub.publish(PUBSUB_NAME, PUBSUB_TOPIC, order); + console.log("Published data: " + JSON.stringify(order)); +``` + +### Step 3: Subscribe to topics + +In a new terminal window, navigate to the `order-processor` directory. + +```bash +cd pub_sub/javascript/sdk/order-processor +``` + +Install dependencies, which will include the `dapr-client` package from the JavaScript SDK: + +```bash +npm install +``` + +Verify you have the following files included in the service directory: + +- `package.json` +- `package-lock.json` + +Run the `order-processor` subscriber service alongside a Dapr sidecar. + +```bash +dapr run --app-port 5001 --app-id order-processing --app-protocol http --dapr-http-port 3501 --components-path ../../../components -- npm run start +``` + +In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. + +```js +server.pubsub.subscribe("order_pub_sub", "orders", (data) => console.log("Subscriber received: " + JSON.stringify(data))); +``` + +### Step 4: View the Pub/sub outputs + +Notice, as specified in the code above, the publisher pushes a random number to the Dapr sidecar while the subscriber receives it. + +Publisher output: + + + +Subscriber output: + + + +#### `pubsub.yaml` component file + +When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: + +- On Windows, under `%UserProfile%\.dapr\components\pubsub.yaml` +- On Linux/MacOS, under `~/.dapr/components/pubsub.yaml` + +With the `pubsub.yaml` component, you can easily swap out underlying components without application code changes. + +The Redis `pubsub.yaml` file included for this quickstart contains the following: + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: order_pub_sub +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + value: "" +``` + +In the YAML file: + +- `metadata/name` is how your application talks to the component. +- `spec/metadata` defines the connection to the instance of the component. +- `scopes` specify which application can use the component. + +{{% /codetab %}} + + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/en-us/download). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've set up: + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Step 2: Publish a topic + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd pub_sub/csharp/sdk/checkout +``` + +Recall NuGet packages: + +```bash +dotnet restore +dotnet build +``` + +Run the `checkout` publisher service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --components-path ../../components -- dotnet run +``` + +In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: + +```cs +while(true) { + Random random = new Random(); + var order = new Order(random.Next(1,1000)); + using var client = new DaprClientBuilder().Build(); + + // Publish an event/message using Dapr PubSub + await client.PublishEventAsync("order_pub_sub", "orders", order); + Console.WriteLine("Published data: " + order); + + await Task.Delay(TimeSpan.FromSeconds(1)); +} + +public record Order([property: JsonPropertyName("orderId")] int OrderId); +``` + +### Step 3: Subscribe to topics + +In a new terminal window, navigate to the `order-processor` directory. + +```bash +cd pub_sub/csharp/sdk/order-processor +``` + +Recall NuGet packages: + +```bash +dotnet restore +dotnet build +``` + +Run the `order-processor` subscriber service alongside a Dapr sidecar. + +```bash +dapr run --app-id order-processor --components-path ../../components --app-port 5001 -- dotnet run +``` + +In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. + +```cs +// Dapr subscription in [Topic] routes orders topic to this route +app.MapPost("/orders", [Topic("order_pub_sub", "orders")] (Order order) => { + Console.WriteLine("Subscriber received : " + order); + return Results.Ok(order); +}); + +public record Order([property: JsonPropertyName("orderId")] int OrderId); +``` + +### Step 4: View the Pub/sub outputs + +Notice, as specified in the code above, the publisher pushes a random number to the Dapr sidecar while the subscriber receives it. + +Publisher output: + + + +Subscriber output: + + + +#### `pubsub.yaml` component file + +When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: + +- On Windows, under `%UserProfile%\.dapr\components\pubsub.yaml` +- On Linux/MacOS, under `~/.dapr/components/pubsub.yaml` + +With the `pubsub.yaml` component, you can easily swap out underlying components without application code changes. + +The Redis `pubsub.yaml` file included for this quickstart contains the following: + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: order_pub_sub +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + value: "" +``` + +In the YAML file: + +- `metadata/name` is how your application talks to the component. +- `spec/metadata` defines the connection to the instance of the component. +- `scopes` specify which application can use the component. + +{{% /codetab %}} + + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- Java JDK 11 (or greater): + - [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html#JDK11), or + - [OpenJDK](https://jdk.java.net/13/) +- [Apache Maven](https://maven.apache.org/install.html), version 3.x. +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Step 2: Publish a topic + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd pub_sub/java/sdk/checkout +``` + +Install the dependencies: + +```bash +mvn clean install +``` + +Run the `checkout` publisher service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --components-path ../../../components -- java -jar target/CheckoutService-0.0.1-SNAPSHOT.jar +``` + +In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: + +```java +public static void main(String[] args) throws InterruptedException{ + String TOPIC_NAME = "orders"; + String PUBSUB_NAME = "order_pub_sub"; + +for (int i = 0; i <= 10; i++) { + int orderId = i; + Order order = new Order(orderId); + DaprClient client = new DaprClientBuilder().build(); + + // Publish an event/message using Dapr PubSub + client.publishEvent( + PUBSUB_NAME, + TOPIC_NAME, + order).block(); + logger.info("Published data: " + order.getOrderId()); + TimeUnit.MILLISECONDS.sleep(5000); +} +``` + +### Step 3: Subscribe to topics + +In a new terminal window, navigate to the `order-processor` directory. + +```bash +cd pub_sub/java/sdk/order-processor +``` + +Install the dependencies: + +```bash +mvn clean install +``` + +Run the `order-processor` subscriber service alongside a Dapr sidecar. + +```bash +dapr run --app-port 8080 --app-id order-processor --components-path ../../../components -- java -jar target/OrderProcessingService-0.0.1-SNAPSHOT.jar +``` + +In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. + +```java +@Topic(name = "orders", pubsubName = "order_pub_sub") +@PostMapping(path = "/orders", consumes = MediaType.ALL_VALUE) +public Mono getCheckout(@RequestBody(required = false) CloudEvent cloudEvent) { + return Mono.fromSupplier(() -> { + try { + logger.info("Subscriber received: " + cloudEvent.getData().getOrderId()); + return ResponseEntity.ok("SUCCESS"); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); +} +``` + +### Step 4: View the Pub/sub outputs + +Notice, as specified in the code above, the publisher pushes a random number to the Dapr sidecar while the subscriber receives it. + +Publisher output: + + + +Subscriber output: + + + +#### `pubsub.yaml` component file + +When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: + +- On Windows, under `%UserProfile%\.dapr\components\pubsub.yaml` +- On Linux/MacOS, under `~/.dapr/components/pubsub.yaml` + +With the `pubsub.yaml` component, you can easily swap out underlying components without application code changes. + +The Redis `pubsub.yaml` file included for this quickstart contains the following: + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: order_pub_sub +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + value: "" +scopes: + - orderprocessing + - checkout +``` + +In the YAML file: + +- `metadata/name` is how your application talks to the component. +- `spec/metadata` defines the connection to the instance of the component. +- `scopes` specify which application can use the component. + +{{% /codetab %}} + +{{< /tabs >}} + +## Next steps + +- Set up Pub/sub using HTTP instead of an SDK. + - [Python](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/python/http) + - [JavaScript](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/javascript/http) + - [.NET](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/csharp/http) + - [Java](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/java/http) +- Learn about [Pub/sub routing]({{< ref howto-route-messages >}}) +- Learn about [topic scoping]({{< ref pubsub-scopes.md >}}) +- Learn about [message time-to-live]({{< ref pubsub-message-ttl.md >}}) +- Learn [how to configure Pub/sub components with multiple namespaces]({{< ref pubsub-namespaces.md >}}) +- List of [Pub/sub components]({{< ref setup-pubsub >}}) +- Read the [API reference]({{< ref pubsub_api.md >}}) + +{{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/tutorials/_index.md b/daprdocs/content/en/getting-started/tutorials/_index.md new file mode 100644 index 000000000..a463e307a --- /dev/null +++ b/daprdocs/content/en/getting-started/tutorials/_index.md @@ -0,0 +1,34 @@ +--- +type: docs +title: "Dapr Tutorials" +linkTitle: "Dapr Tutorials" +weight: 70 +description: "Walk through in-depth examples to learn more about how to work with Dapr concepts" +no_list: true +--- + +Now that you've already initialized Dapr and experimented with some of Dapr's building blocks, walk through our more detailed tutorials. + +#### Before you begin + +- [Set up your local Dapr environment]({{< ref "install-dapr-cli.md" >}}). +- [Explore one of Dapr's building blocks via our quickstarts]({{< ref "getting-started/quickstarts/_index.md" >}}). + +## Tutorials + +Thanks to our expansive Dapr community, we offer tutorials hosted both on Dapr Docs and on our [GitHub repository](https://github.com/dapr/quickstarts). + +| Dapr Docs tutorials | Description | +|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Define a component]({{< ref get-started-component.md >}}) | Create a component definition file to interact with the Secrets building block. +| [Configure State & Pub/sub]({{< ref configure-state-pubsub.md >}}) | Configure State Store and Pub/sub message broker components for Dapr. + +| GitHub tutorials | Description | +|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Hello World](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-world) | *Recommended*
Demonstrates how to run Dapr locally. Highlights service invocation and state management. | +| [Hello World Kubernetes](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes) | *Recommended*
Demonstrates how to run Dapr in Kubernetes. Highlights service invocation and state management. | +| [Distributed Calculator](https://github.com/dapr/quickstarts/tree/master/tutorials/distributed-calculator) | Demonstrates a distributed calculator application that uses Dapr services to power a React web app. Highlights polyglot (multi-language) programming, service invocation and state management. | +| [Pub/Sub](https://github.com/dapr/quickstarts/tree/master/tutorials/pub-sub) | Demonstrates how to use Dapr to enable pub-sub applications. Uses Redis as a pub-sub component. | +| [Bindings](https://github.com/dapr/quickstarts/tree/master/tutorials/bindings) | Demonstrates how to use Dapr to create input and output bindings to other components. Uses bindings to Kafka. | +| [Observability](https://github.com/dapr/quickstarts/tree/master/tutorials/observability) | Demonstrates Dapr tracing capabilities. Uses Zipkin as a tracing component. | +| [Secret Store](https://github.com/dapr/quickstarts/tree/master/tutorials/secretstore) | Demonstrates the use of Dapr Secrets API to access secret stores. | \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md b/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md new file mode 100644 index 000000000..3de990985 --- /dev/null +++ b/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md @@ -0,0 +1,339 @@ +--- +type: docs +title: "Tutorial: Configure state store and pub/sub message broker" +linkTitle: "Configure state & pub/sub" +weight: 80 +description: "Configure state store and pub/sub message broker components for Dapr" +aliases: + - /getting-started/tutorials/configure-redis/ +--- + +To get up and running with the state and Pub/sub building blocks, you'll need two components: + +- A state store component for persistence and restoration. +- As pub/sub message broker component for async-style message delivery. + +A full list of supported components can be found here: +- [Supported state stores]({{< ref supported-state-stores >}}) +- [Supported pub/sub message brokers]({{< ref supported-pubsub >}}) + +For this tutorial, we describe how to get up and running with Redis. + +### Step 1: Create a Redis store + +Dapr can use any Redis instance, either: + +- Containerized on your local dev machine, or +- A managed cloud service. + +If you already have a Redis store, move on to the [configuration](#configure-dapr-components) section. + +{{< tabs "Self-Hosted" "Kubernetes" "Azure" "AWS" "GCP" >}} + +{{% codetab %}} +Redis is automatically installed in self-hosted environments by the Dapr CLI as part of the initialization process. You are all set! Skip ahead to the [next steps](#next-steps). +{{% /codetab %}} + +{{% codetab %}} +You can use [Helm](https://helm.sh/) to create a Redis instance in our Kubernetes cluster. Before beginning, [install Helm v3](https://github.com/helm/helm#install). + +Install Redis into your cluster: + +```bash +helm repo add bitnami https://charts.bitnami.com/bitnami +helm repo update +helm install redis bitnami/redis +``` + +For Dapr's Pub/sub functionality, you'll need at least Redis version 5. For state store, you can use a lower version. + +Run `kubectl get pods` to see the Redis containers now running in your cluster: + +```bash +$ kubectl get pods +NAME READY STATUS RESTARTS AGE +redis-master-0 1/1 Running 0 69s +redis-replicas-0 1/1 Running 0 69s +redis-replicas-1 1/1 Running 0 22s +``` + +For Kubernetes: +- The hostname is `redis-master.default.svc.cluster.local:6379` +- The secret, `redis`, is created automatically. + +{{% /codetab %}} + +{{% codetab %}} +Verify you have an [Azure subscription](https://azure.microsoft.com/en-us/free/). + +1. Open and log into the [Azure portal](https://ms.portal.azure.com/#create/Microsoft.Cache) to start the Azure Redis Cache creation flow. +1. Fill out the necessary information. + - Dapr Pub/sub uses [Redis streams](https://redis.io/topics/streams-intro) introduced by Redis 5.0. To use Azure Redis Cache for Pub/sub, set the version to *(PREVIEW) 6*. +1. Click **Create** to kickoff deployment of your Redis instance. +1. Make note of the Redis instance hostname from the **Overview** page in Azure portal for later. + - It should look like `xxxxxx.redis.cache.windows.net:6380`. +1. Once your instance is created, grab your access key: + 1. Navigate to **Access Keys** under **Settings**. + 1. Create a Kubernetes secret to store your Redis password: + + ```bash + kubectl create secret generic redis --from-literal=redis-password=********* + ``` + +{{% /codetab %}} + +{{% codetab %}} + +1. Deploy a Redis instance from [AWS Redis](https://aws.amazon.com/redis/). +1. Note the Redis hostname in the AWS portal for later. +1. Create a Kubernetes secret to store your Redis password: + + ```bash + kubectl create secret generic redis --from-literal=redis-password=********* + ``` + +{{% /codetab %}} + +{{% codetab %}} + +1. Deploy a MemoryStore instance from [GCP Cloud MemoryStore](https://cloud.google.com/memorystore/). +1. Note the Redis hostname in the GCP portal for later. +1. Create a Kubernetes secret to store your Redis password: + + ```bash + kubectl create secret generic redis --from-literal=redis-password=********* + ``` + +{{% /codetab %}} + +{{< /tabs >}} + +### Step 2: Configure Dapr components + +Dapr defines resources to use for building block functionality with components. These steps go through how to connect the resources you created above to Dapr for state and pub/sub. + +#### Locate your component filese + +{{< tabs "Self-Hosted" "Kubernetes" >}} + +{{% codetab %}} + +In self-hosted mode, component files are automatically created under: +- **Windows**: `%USERPROFILE%\.dapr\components\` +- **Linux/MacOS**: `$HOME/.dapr/components` + +{{% /codetab %}} + +{{% codetab %}} + +Since Kubernetes files are applied with `kubectl`, they can be created in any directory. + +{{% /codetab %}} + +{{< /tabs >}} + +#### Create State store component + +Create a file named `redis-state.yaml`, and paste the following: + +{{< tabs "Self-Hosted" "Kubernetes" >}} + +{{% codetab %}} + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: statestore + namespace: default +spec: + type: state.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + secretKeyRef: + name: redis + key: redis-password + # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) + # - name: enableTLS + # value: true +``` + +{{% /codetab %}} + +{{% codetab %}} + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: statestore + namespace: default +spec: + type: state.redis + version: v1 + metadata: + - name: redisHost + value: + - name: redisPassword + secretKeyRef: + name: redis + key: redis-password + # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) + # - name: enableTLS + # value: true +``` + +Note the above code example uses the Kubernetes secret you created earlier when setting up a cluster. + +{{% /codetab %}} + +{{< /tabs >}} + +{{% alert title="Other stores" color="primary" %}} +If using a state store other than Redis, refer to the [supported state stores]({{< ref supported-state-stores >}}) for information on options to set. +{{% /alert %}} + +#### Create Pub/sub message broker component + +Create a file called `redis-pubsub.yaml`, and paste the following: + +{{< tabs "Self-Hosted" "Kubernetes" >}} + +{{% codetab %}} + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: pubsub + namespace: default +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + secretKeyRef: + name: redis + key: redis-password + # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) + # - name: enableTLS + # value: true +``` + +{{% /codetab %}} + +{{% codetab %}} + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: pubsub + namespace: default +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: + - name: redisPassword + secretKeyRef: + name: redis + key: redis-password + # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) + # - name: enableTLS + # value: true +``` + +Note the above code example uses the Kubernetes secret you created earlier when setting up a cluster. + +{{% /codetab %}} + +{{< /tabs >}} + +{{% alert title="Other stores" color="primary" %}} +If using a pub/sub message broker other than Redis, refer to the [supported pub/sub message brokers]({{< ref supported-pubsub >}}) for information on options to set. +{{% /alert %}} + +#### Hard coded passwords (not recommended) + +For development purposes *only*, you can skip creating Kubernetes secrets and place passwords directly into the Dapr component file: + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: statestore + namespace: default +spec: + type: state.redis + version: v1 + metadata: + - name: redisHost + value: + - name: redisPassword + value: + # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) + # - name: enableTLS + # value: true +``` + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: pubsub + namespace: default +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: + - name: redisPassword + value: + # uncomment below for connecting to redis cache instances over TLS (ex - Azure Redis Cache) + # - name: enableTLS + # value: true +``` + +### Step 3: Apply the configuration + +{{< tabs "Self-Hosted" "Kubernetes">}} + +{{% codetab %}} + +When you run `dapr init`, Dapr creates a default redis `pubsub.yaml` on your local machine. Verify by opening your components directory: + +- On Windows, under `%UserProfile%\.dapr\components\pubsub.yaml` +- On Linux/MacOS, under `~/.dapr/components/pubsub.yaml` + +For new component files: + +1. Create a new `components` directory in your app folder containing the YAML files. +1. Provide the path to the `dapr run` command with the flag `--components-path` + +If you initialized Dapr in [slim mode]({{< ref self-hosted-no-docker.md >}}) (without Docker), you need to manually create the default directory, or always specify a components directory using `--components-path`. + +{{% /codetab %}} + +{{% codetab %}} + +Run `kubectl apply -f ` for both state and pubsub files: + +```bash +kubectl apply -f redis-state.yaml +kubectl apply -f redis-pubsub.yaml +``` + +{{% /codetab %}} + +{{< /tabs >}} + +## Next steps +[Try out a Dapr quickstart]({{< ref quickstarts.md >}}) \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/tutorials/get-started-component.md b/daprdocs/content/en/getting-started/tutorials/get-started-component.md new file mode 100644 index 000000000..e09f488d3 --- /dev/null +++ b/daprdocs/content/en/getting-started/tutorials/get-started-component.md @@ -0,0 +1,107 @@ +--- +type: docs +title: "Quickstart: Define a component" +linkTitle: "Define a component" +weight: 70 +description: "Create a component definition file to interact with the Secrets building block" +--- + +When building an app, you'd most likely create your own component file definitions, depending on the building block and specific component that you'd like to use. + +In this quickstart, you will create a component definition file to interact with the [Secrets building block]({{< ref secrets >}}): + +- Create a local JSON secret store. +- Register the secret store with Dapr using a component definition file. +- Obtain the secret using the Dapr HTTP API. + +## Step 1: Create a JSON secret store + +Dapr supports [many types of secret stores]({{< ref supported-secret-stores >}}), but for this quickstart, create a local JSON file named `mysecrets.json` with the following secret: + +```json +{ + "my-secret" : "I'm Batman" +} +``` + +## Step 2: Create a secret store Dapr component + +1. Create a new directory named `my-components` to hold the new component file: + + ```bash + mkdir my-components + ``` + +1. Navigate into this directory. + + ```bash + cd my-components + ``` + +1. Create a new file `localSecretStore.yaml` with the following contents: + + ```yaml + apiVersion: dapr.io/v1alpha1 + kind: Component + metadata: + name: my-secret-store + namespace: default + spec: + type: secretstores.local.file + version: v1 + metadata: + - name: secretsFile + value: /mysecrets.json + - name: nestedSeparator + value: ":" + ``` + +In the above file definition: +- `type: secretstores.local.file` tells Dapr to use the local file component as a secret store. +- The metadata fields provide component-specific information needed to work with this component. In this case, the secret store JSON path is relative to where you call `dapr run`. + +## Step 3: Run the Dapr sidecar + +Launch a Dapr sidecar that will listen on port 3500 for a blank application named `myapp`: + +```bash +dapr run --app-id myapp --dapr-http-port 3500 --components-path ./my-components +``` + +{{% alert title="Tip" color="primary" %}} +If an error message occurs, stating the `app-id` is already in use, you may need to stop any currently running Dapr sidecars. Stop the sidecar before running the next `dapr run` command by either: + +- Pressing Ctrl+C or Command+C. +- Running the `dapr stop` command in the terminal. + +{{% /alert %}} + +## Step 4: Get a secret + +In a separate terminal, run: + +{{< tabs "HTTP API (Bash)" "HTTP API (PowerShell)">}} +{{% codetab %}} + +```bash +curl http://localhost:3500/v1.0/secrets/my-secret-store/my-secret +``` + +{{% /codetab %}} + +{{% codetab %}} + +```powershell +Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/secrets/my-secret-store/my-secret' +``` + +{{% /codetab %}} +{{< /tabs >}} + +**Output:** + +```json +{"my-secret":"I'm Batman"} +``` + +{{< button text="Next step: Set up a Pub/sub broker >>" page="pubsub-quickstart" >}} \ No newline at end of file diff --git a/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md b/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md index b70fc73ba..8b3aae53a 100644 --- a/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md +++ b/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md @@ -43,7 +43,7 @@ kubectl create namespace namespace-a kubectl config set-context --current --namespace=namespace-a ``` -Install Redis (master and slave) on `namespace-a`, following [these instructions]({{< ref "configure-state-pubsub.md" >}}). +Install Redis (master and slave) on `namespace-a`, following [these instructions]({{< ref "getting-started/tutorials/configure-state-pubsub.md" >}}). Now, configure `deploy/redis.yaml`, paying attention to the hostname containing `namespace-a`. diff --git a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-deploy.md b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-deploy.md index 749672a92..1133afc00 100644 --- a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-deploy.md +++ b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-deploy.md @@ -173,4 +173,4 @@ dapr-sentry-9435776c7f-8f7yd 1/1 Running 0 40s ## Next steps -- [Configure state store & pubsub message broker]({{< ref configure-state-pubsub.md >}}) +- [Configure state store & pubsub message broker]({{< ref "getting-started/tutorials/configure-state-pubsub.md" >}}) diff --git a/daprdocs/static/images/install-dapr-selfhost/docker-containers.png b/daprdocs/static/images/install-dapr-selfhost/docker-containers.png new file mode 100644 index 0000000000000000000000000000000000000000..d9300e2ac94e5909c7038753fefcc77d265fd960 GIT binary patch literal 21405 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 -ha#n+O$~l$LBQ<%mMK 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 literal 0 HcmV?d00001 diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-dotnet-publisher-output.png b/daprdocs/static/images/pubsub-quickstart/pubsub-dotnet-publisher-output.png new file mode 100644 index 0000000000000000000000000000000000000000..517731c273b6f0f6953bb07c10b64c096f80c418 GIT binary patch literal 30410 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 G`TqcOfjLV6 literal 0 HcmV?d00001 diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-java-publisher-output.png b/daprdocs/static/images/pubsub-quickstart/pubsub-java-publisher-output.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2a2c1e8d29104035d28337bf874631eb14d566 GIT binary patch literal 45870 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 literal 0 HcmV?d00001 diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-java-subscriber-output.png b/daprdocs/static/images/pubsub-quickstart/pubsub-java-subscriber-output.png new file mode 100644 index 0000000000000000000000000000000000000000..feb26bb1679867076b34577f2628f08743135fa3 GIT binary patch literal 58856 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 literal 0 HcmV?d00001 diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-js-subscriber-output.png b/daprdocs/static/images/pubsub-quickstart/pubsub-js-subscriber-output.png new file mode 100644 index 0000000000000000000000000000000000000000..36cb027d15a02fa5d4eafeb5ba5602554c50139f GIT binary patch literal 22636 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 II;Vst01S$(lK=n! literal 0 HcmV?d00001 diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-python-publisher-output.png b/daprdocs/static/images/pubsub-quickstart/pubsub-python-publisher-output.png new file mode 100644 index 0000000000000000000000000000000000000000..87dc099dec606a312eb652b5cd9840a2e077706f GIT binary patch literal 27040 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 literal 0 HcmV?d00001 diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-python-subscriber-output.png b/daprdocs/static/images/pubsub-quickstart/pubsub-python-subscriber-output.png new file mode 100644 index 0000000000000000000000000000000000000000..bc2389b227502f1e8398c1eb060010eeb35b9975 GIT binary patch literal 23399 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 Date: Fri, 25 Feb 2022 17:05:21 -0600 Subject: [PATCH 02/24] add diagram and 'coming soon' Signed-off-by: Hannah Hunter --- .../en/getting-started/quickstarts/_index.md | 15 ++++++++++----- .../quickstarts/pubsub-quickstart.md | 2 ++ .../pubsub-quickstart/pubsub-diagram.png | Bin 0 -> 119104 bytes 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 daprdocs/static/images/pubsub-quickstart/pubsub-diagram.png diff --git a/daprdocs/content/en/getting-started/quickstarts/_index.md b/daprdocs/content/en/getting-started/quickstarts/_index.md index 70945da35..a6ed9dcec 100644 --- a/daprdocs/content/en/getting-started/quickstarts/_index.md +++ b/daprdocs/content/en/getting-started/quickstarts/_index.md @@ -21,8 +21,13 @@ Hit the ground running with our Dapr quickstarts, complete with code samples aim ## Quickstarts -| Quickstarts | Description | -|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | -| State Management | Coming soon. | -| Service Invocation | Coming soon. | \ No newline at end of file +| Quickstarts | Description | +| ----------- | ----------- | +| [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | +| State Management | Coming soon. | +| Service Invocation | Coming soon. | +| Bindings | Coming soon. | +| Actors | Coming soon. | +| Observability | Coming soon. | +| Secrets Management | Coming soon. | +| Configuration | Coming soon. | \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 35c59d204..6695bb222 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -12,6 +12,8 @@ Let's take a look at Dapr's [Publish and Subscribe (Pub/sub) building block]({{< 1. [A Pub/sub component](https://docs.dapr.io/concepts/components-concept/#pubsub-brokers) queues or brokers those messages. Our example below uses Redis, you can use RabbitMQ, Kafka, etc. 1. The subscriber to that topic pulls messages from the queue and processes them. + + Select your preferred language-specific Dapr SDK before proceeding with the quickstart. {{< tabs "Python" "JavaScript" ".NET" "Java" >}} diff --git a/daprdocs/static/images/pubsub-quickstart/pubsub-diagram.png b/daprdocs/static/images/pubsub-quickstart/pubsub-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..21256c81765c3d56973f373e04ef7b55facfb836 GIT binary patch literal 119104 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 literal 0 HcmV?d00001 From 12421aaa710fffd0768da5e4c9152c9df2c6ceec Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Mon, 28 Feb 2022 13:00:42 -0600 Subject: [PATCH 03/24] link to github repos; wording changes Signed-off-by: Hannah Hunter --- daprdocs/content/en/getting-started/get-started-api.md | 4 ++-- daprdocs/content/en/getting-started/quickstarts/_index.md | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/daprdocs/content/en/getting-started/get-started-api.md b/daprdocs/content/en/getting-started/get-started-api.md index 8f3c6aba1..5f7da99bb 100644 --- a/daprdocs/content/en/getting-started/get-started-api.md +++ b/daprdocs/content/en/getting-started/get-started-api.md @@ -13,7 +13,7 @@ Running [`dapr init`]({{}}) loads your local envir - State management, and - A message broker. -With this setup, you can run a Dapr sidecar with the Dapr CLI and try out the state API to store and retrieve a state. [Learn more about the state building block and how it works in our concept docs]({{< ref state-management >}}). +With this setup, run Dapr using the Dapr CLI and try out the state API to store and retrieve a state. [Learn more about the state building block and how it works in our concept docs]({{< ref state-management >}}). In this guide, you will simulate an application by running the sidecar and calling the API directly. For the purpose of this tutorial you'll run the sidecar without an application. @@ -32,7 +32,7 @@ Since no custom component folder was defined with the above command, Dapr uses t - On Windows, under `%UserProfile%\.dapr\components` - On Linux/MacOS, under `~/.dapr/components` -These tell Dapr to use the local Redis Docker container as a state store and message broker. +These tell Dapr to use the local Docker container for Redis as a state store and message broker. ### Step 2: Save state diff --git a/daprdocs/content/en/getting-started/quickstarts/_index.md b/daprdocs/content/en/getting-started/quickstarts/_index.md index a6ed9dcec..40f2dc57f 100644 --- a/daprdocs/content/en/getting-started/quickstarts/_index.md +++ b/daprdocs/content/en/getting-started/quickstarts/_index.md @@ -14,7 +14,6 @@ Hit the ground running with our Dapr quickstarts, complete with code samples aim {{% /alert %}} - #### Before you begin - [Set up your local Dapr environment]({{< ref "install-dapr-cli.md" >}}). @@ -24,8 +23,8 @@ Hit the ground running with our Dapr quickstarts, complete with code samples aim | Quickstarts | Description | | ----------- | ----------- | | [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | -| State Management | Coming soon. | -| Service Invocation | Coming soon. | +| State Management | While we work on quickstarts for Dapr's State Management, get started with our [examples on GitHub](https://github.com/dapr/quickstarts/state_management). | +| Service Invocation | While we work on quickstarts for Dapr's Service Invocation, get started with our [examples on GitHub](https://github.com/dapr/quickstarts/service_invocation). | | Bindings | Coming soon. | | Actors | Coming soon. | | Observability | Coming soon. | From 39da4a36831f7ee87a4fd3f388ed66757791d44b Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Mon, 28 Feb 2022 13:36:10 -0800 Subject: [PATCH 04/24] Remove hardcoded "en" in Urls Signed-off-by: Nick Greenfield --- .../content/en/getting-started/quickstarts/pubsub-quickstart.md | 2 +- .../en/getting-started/tutorials/configure-state-pubsub.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 6695bb222..eb486f2b6 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -173,7 +173,7 @@ In the YAML file: For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). -- [Latest Node.js installed](https://nodejs.org/en/download/). +- [Latest Node.js installed](https://nodejs.org/download/). - [Docker Desktop](https://www.docker.com/products/docker-desktop). ### Step 1: Set up the environment diff --git a/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md b/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md index 3de990985..cb858b347 100644 --- a/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md +++ b/daprdocs/content/en/getting-started/tutorials/configure-state-pubsub.md @@ -64,7 +64,7 @@ For Kubernetes: {{% /codetab %}} {{% codetab %}} -Verify you have an [Azure subscription](https://azure.microsoft.com/en-us/free/). +Verify you have an [Azure subscription](https://azure.microsoft.com/free/). 1. Open and log into the [Azure portal](https://ms.portal.azure.com/#create/Microsoft.Cache) to start the Azure Redis Cache creation flow. 1. Fill out the necessary information. From f267c0f5f9e6f89db118d47ce0a811a04b338418 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Mon, 28 Feb 2022 13:40:11 -0800 Subject: [PATCH 05/24] Remove another "en" reference from links Signed-off-by: Nick Greenfield --- .../content/en/getting-started/quickstarts/pubsub-quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index eb486f2b6..e1885cd54 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -301,7 +301,7 @@ In the YAML file: For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). -- [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/en-us/download). +- [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/download). - [Docker Desktop](https://www.docker.com/products/docker-desktop). ### Step 1: Set up the environment From 2f83cc9307926a83445df33a57fba942349406a6 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Mon, 7 Mar 2022 15:15:38 -0600 Subject: [PATCH 06/24] add go samples; update outdated commands Signed-off-by: Hannah Hunter --- .../quickstarts/pubsub-quickstart.md | 300 +++++++++++++++++- 1 file changed, 288 insertions(+), 12 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index e1885cd54..b837d165e 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -16,7 +16,7 @@ Let's take a look at Dapr's [Publish and Subscribe (Pub/sub) building block]({{< Select your preferred language-specific Dapr SDK before proceeding with the quickstart. -{{< tabs "Python" "JavaScript" ".NET" "Java" >}} +{{< tabs "Python" "JavaScript" ".NET" "Java" "Go" >}} {{% codetab %}} @@ -53,7 +53,7 @@ pip3 install -r requirements.txt Run the `checkout` publisher service alongside a Dapr sidecar. ```bash -dapr run --app-id checkout --components-path ../components -- python3 app.py +dapr run --app-id checkout --components-path ../../../components/ -- python3 app.py ``` In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: @@ -89,7 +89,7 @@ pip3 install -r requirements.txt Run the `order-processor` subscriber service alongside a Dapr sidecar. ```bash -dapr run --app-id order-processor --app-port 5001 --components-path ../../components -- python3 app.py +dapr run --app-id order-processor --components-path ../../../components/ --app-port 5001 -- python3 app.py ``` In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. @@ -125,11 +125,33 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: - +``` +== APP == INFO:root:Published data: {"orderId": 1} +== APP == INFO:root:Published data: {"orderId": 2} +== APP == INFO:root:Published data: {"orderId": 3} +== APP == INFO:root:Published data: {"orderId": 4} +== APP == INFO:root:Published data: {"orderId": 5} +== APP == INFO:root:Published data: {"orderId": 6} +== APP == INFO:root:Published data: {"orderId": 7} +== APP == INFO:root:Published data: {"orderId": 8} +== APP == INFO:root:Published data: {"orderId": 9} +== APP == INFO:root:Published data: {"orderId": 10} +``` Subscriber output: - +``` +== APP == INFO:root:Subscriber received: {"orderId": 1} +== APP == INFO:root:Subscriber received: {"orderId": 2} +== APP == INFO:root:Subscriber received: {"orderId": 3} +== APP == INFO:root:Subscriber received: {"orderId": 4} +== APP == INFO:root:Subscriber received: {"orderId": 5} +== APP == INFO:root:Subscriber received: {"orderId": 6} +== APP == INFO:root:Subscriber received: {"orderId": 7} +== APP == INFO:root:Subscriber received: {"orderId": 8} +== APP == INFO:root:Subscriber received: {"orderId": 9} +== APP == INFO:root:Subscriber received: {"orderId": 10} +``` #### `pubsub.yaml` component file @@ -253,10 +275,38 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: +```cli +== APP == Published data: {"orderId":612} +== APP == Published data: {"orderId":59} +== APP == Published data: {"orderId":75} +== APP == Published data: {"orderId":257} +== APP == Published data: {"orderId":606} +== APP == Published data: {"orderId":568} +== APP == Published data: {"orderId":581} +== APP == Published data: {"orderId":977} +== APP == Published data: {"orderId":92} +== APP == Published data: {"orderId":650} +== APP == Published data: {"orderId":225} +``` + Subscriber output: +```cli +== APP == Subscriber received: {"orderId":612} +== APP == Subscriber received: {"orderId":59} +== APP == Subscriber received: {"orderId":75} +== APP == Subscriber received: {"orderId":257} +== APP == Subscriber received: {"orderId":606} +== APP == Subscriber received: {"orderId":568} +== APP == Subscriber received: {"orderId":581} +== APP == Subscriber received: {"orderId":977} +== APP == Subscriber received: {"orderId":92} +== APP == Subscriber received: {"orderId":650} +== APP == Subscriber received: {"orderId":225} +``` + #### `pubsub.yaml` component file @@ -390,10 +440,34 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: - +```dotnetcli +== APP == Published data: Order { OrderId = 381 } +== APP == Published data: Order { OrderId = 917 } +== APP == Published data: Order { OrderId = 292 } +== APP == Published data: Order { OrderId = 722 } +== APP == Published data: Order { OrderId = 262 } +== APP == Published data: Order { OrderId = 507 } +== APP == Published data: Order { OrderId = 73 } +== APP == Published data: Order { OrderId = 21 } +== APP == Published data: Order { OrderId = 983 } +== APP == Published data: Order { OrderId = 886 } +``` Subscriber output: +```dotnetcli +== APP == Subscriber received: Order { OrderId = 381 } +== APP == Subscriber received: Order { OrderId = 917 } +== APP == Subscriber received: Order { OrderId = 292 } +== APP == Subscriber received: Order { OrderId = 722 } +== APP == Subscriber received: Order { OrderId = 262 } +== APP == Subscriber received: Order { OrderId = 507 } +== APP == Subscriber received: Order { OrderId = 73 } +== APP == Subscriber received: Order { OrderId = 21 } +== APP == Subscriber received: Order { OrderId = 983 } +== APP == Subscriber received: Order { OrderId = 886 } +``` + #### `pubsub.yaml` component file @@ -537,11 +611,212 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: - +``` +== APP == 2171 [main] INFO com.service.CheckoutServiceApplication - Published data: 0 +== APP == 7194 [main] INFO com.service.CheckoutServiceApplication - Published data: 1 +== APP == 12213 [main] INFO com.service.CheckoutServiceApplication - Published data: 2 +== APP == 17233 [main] INFO com.service.CheckoutServiceApplication - Published data: 3 +== APP == 22252 [main] INFO com.service.CheckoutServiceApplication - Published data: 4 +== APP == 27276 [main] INFO com.service.CheckoutServiceApplication - Published data: 5 +== APP == 32320 [main] INFO com.service.CheckoutServiceApplication - Published data: 6 +== APP == 37340 [main] INFO com.service.CheckoutServiceApplication - Published data: 7 +== APP == 42356 [main] INFO com.service.CheckoutServiceApplication - Published data: 8 +== APP == 47386 [main] INFO com.service.CheckoutServiceApplication - Published data: 9 +== APP == 52410 [main] INFO com.service.CheckoutServiceApplication - Published data: 10 +``` Subscriber output: - +``` +== APP == 2022-03-07 13:31:19.551 INFO 43512 --- [nio-8080-exec-1] c.s.c.OrderProcessingServiceController : Subscriber received: 0 +== APP == 2022-03-07 13:31:19.551 INFO 43512 --- [nio-8080-exec-5] c.s.c.OrderProcessingServiceController : Subscriber received: 1 +== APP == 2022-03-07 13:31:19.552 INFO 43512 --- [nio-8080-exec-9] c.s.c.OrderProcessingServiceController : Subscriber received: 2 +== APP == 2022-03-07 13:31:19.551 INFO 43512 --- [nio-8080-exec-6] c.s.c.OrderProcessingServiceController : Subscriber received: 3 +== APP == 2022-03-07 13:31:19.552 INFO 43512 --- [nio-8080-exec-2] c.s.c.OrderProcessingServiceController : Subscriber received: 4 +== APP == 2022-03-07 13:31:19.553 INFO 43512 --- [nio-8080-exec-2] c.s.c.OrderProcessingServiceController : Subscriber received: 5 +== APP == 2022-03-07 13:31:19.553 INFO 43512 --- [nio-8080-exec-9] c.s.c.OrderProcessingServiceController : Subscriber received: 6 +== APP == 2022-03-07 13:31:22.849 INFO 43512 --- [nio-8080-exec-3] c.s.c.OrderProcessingServiceController : Subscriber received: 7 +== APP == 2022-03-07 13:31:27.866 INFO 43512 --- [nio-8080-exec-6] c.s.c.OrderProcessingServiceController : Subscriber received: 8 +== APP == 2022-03-07 13:31:32.895 INFO 43512 --- [nio-8080-exec-6] c.s.c.OrderProcessingServiceController : Subscriber received: 9 +== APP == 2022-03-07 13:31:37.919 INFO 43512 --- [nio-8080-exec-2] c.s.c.OrderProcessingServiceController : Subscriber received: 10 +``` + +#### `pubsub.yaml` component file + +When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: + +- On Windows, under `%UserProfile%\.dapr\components\pubsub.yaml` +- On Linux/MacOS, under `~/.dapr/components/pubsub.yaml` + +With the `pubsub.yaml` component, you can easily swap out underlying components without application code changes. + +The Redis `pubsub.yaml` file included for this quickstart contains the following: + +```yaml +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: order_pub_sub +spec: + type: pubsub.redis + version: v1 + metadata: + - name: redisHost + value: localhost:6379 + - name: redisPassword + value: "" +scopes: + - orderprocessing + - checkout +``` + +In the YAML file: + +- `metadata/name` is how your application talks to the component. +- `spec/metadata` defines the connection to the instance of the component. +- `scopes` specify which application can use the component. + +{{% /codetab %}} + + +{{% codetab %}} + +### 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/). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Step 2: Publish a topic + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd pub_sub/go/sdk/checkout +``` + +Install the dependencies: + +```bash +go build app.go +``` + +Run the `checkout` publisher service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 --components-path ../../../components -- go run app.go +``` + +In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: + +```go +var ( + PUBSUB_NAME = "order_pub_sub" + PUBSUB_TOPIC = "orders" +) + +func main() { + client, err := dapr.NewClient() + if err != nil { + panic(err) + } + defer client.Close() + ctx := context.Background() + for i := 1; i <= 10; i++ { + order := `{"orderId":` + strconv.Itoa(i) + `}` + + // Publish an event using Dapr pub/sub + if err := client.PublishEvent(ctx, PUBSUB_NAME, PUBSUB_TOPIC, []byte(order)); err != nil { + panic(err) + } + + fmt.Sprintf("Published data: ", order) + + time.Sleep(1000) + } +} +``` + +### Step 3: Subscribe to topics + +In a new terminal window, navigate to the `order-processor` directory. + +```bash +cd pub_sub/go/sdk/order-processor +``` + +Install the dependencies: + +```bash +go build app.go +``` + +Run the `order-processor` subscriber service alongside a Dapr sidecar. + +```bash +dapr run --app-port 6001 --app-id order-processor --app-protocol http --dapr-http-port 3501 --components-path ../../../components -- go run app.go +``` + +In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. + +```go +var sub = &common.Subscription{ + PubsubName: "order_pub_sub", + Topic: "orders", + Route: "orders", +} + +func main() { + s := daprd.NewService(":6001") + http.HandleFunc("/orders", handleRequest) + if err := s.AddTopicEventHandler(sub, eventHandler); err != nil { + log.Fatalf("error adding topic subscription: %v", err) + } + if err := s.Start(); err != nil && err != http.ErrServerClosed { + log.Fatalf("error listenning: %v", err) + } +} + +func eventHandler(ctx context.Context, e *common.TopicEvent) (retry bool, err error) { + fmt.Println("Subscriber received: ", e.Data) + return false, nil +} +``` + +### Step 4: View the Pub/sub outputs + +Notice, as specified in the code above, the publisher pushes a numbered message to the Dapr sidecar while the subscriber receives it. + +Publisher output: + +``` +== APP == dapr client initializing for: 127.0.0.1:63293 +``` + +Subscriber output: + +``` +== APP == Subscriber received: {"orderId":1} +== APP == Subscriber received: {"orderId":2} +== APP == Subscriber received: {"orderId":3} +== APP == Subscriber received: {"orderId":4} +== APP == Subscriber received: {"orderId":5} +== APP == Subscriber received: {"orderId":6} +== APP == Subscriber received: {"orderId":7} +== APP == Subscriber received: {"orderId":8} +== APP == Subscriber received: {"orderId":9} +== APP == Subscriber received: {"orderId":10} +``` #### `pubsub.yaml` component file @@ -585,10 +860,11 @@ In the YAML file: ## Next steps - Set up Pub/sub using HTTP instead of an SDK. - - [Python](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/python/http) - - [JavaScript](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/javascript/http) - - [.NET](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/csharp/http) - - [Java](https://github.com/dapr/quickstarts/tree/feature/new_quickstarts/pub_sub/java/http) + - [Python](https://github.com/dapr/quickstarts/pub_sub/python/http) + - [JavaScript](https://github.com/dapr/quickstarts/pub_sub/javascript/http) + - [.NET](https://github.com/dapr/quickstarts/pub_sub/csharp/http) + - [Java](https://github.com/dapr/quickstarts/pub_sub/java/http) + - [Go](https://github.com/dapr/quickstarts/pub_sub/go/http) - Learn about [Pub/sub routing]({{< ref howto-route-messages >}}) - Learn about [topic scoping]({{< ref pubsub-scopes.md >}}) - Learn about [message time-to-live]({{< ref pubsub-message-ttl.md >}}) From af1cba605efd8fe7d49e524c9436c73f665610cf Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Mon, 7 Mar 2022 15:26:54 -0600 Subject: [PATCH 07/24] removed rest of images Signed-off-by: Hannah Hunter --- .../en/getting-started/quickstarts/pubsub-quickstart.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index b837d165e..4db0557ec 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -289,8 +289,6 @@ Publisher output: == APP == Published data: {"orderId":225} ``` - - Subscriber output: ```cli @@ -307,8 +305,6 @@ Subscriber output: == APP == Subscriber received: {"orderId":225} ``` - - #### `pubsub.yaml` component file When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: @@ -468,8 +464,6 @@ Subscriber output: == APP == Subscriber received: Order { OrderId = 886 } ``` - - #### `pubsub.yaml` component file When you run `dapr init`, Dapr creates a default Redis `pubsub.yaml` and runs a Redis container on your local machine, located: From e1a831b6c7f837c094b8c359c911cbabefbfde39 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Mon, 7 Mar 2022 15:45:31 -0600 Subject: [PATCH 08/24] filter out excess code snippet Signed-off-by: Hannah Hunter --- .../quickstarts/pubsub-quickstart.md | 45 ++----------------- 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 4db0557ec..062795b3f 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -714,31 +714,11 @@ dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 --component In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: ```go -var ( - PUBSUB_NAME = "order_pub_sub" - PUBSUB_TOPIC = "orders" -) - -func main() { - client, err := dapr.NewClient() - if err != nil { - panic(err) - } - defer client.Close() - ctx := context.Background() - for i := 1; i <= 10; i++ { - order := `{"orderId":` + strconv.Itoa(i) + `}` - - // Publish an event using Dapr pub/sub - if err := client.PublishEvent(ctx, PUBSUB_NAME, PUBSUB_TOPIC, []byte(order)); err != nil { - panic(err) - } - - fmt.Sprintf("Published data: ", order) - - time.Sleep(1000) - } +if err := client.PublishEvent(ctx, PUBSUB_NAME, PUBSUB_TOPIC, []byte(order)); err != nil { +panic(err) } + +fmt.Sprintf("Published data: ", order) ``` ### Step 3: Subscribe to topics @@ -764,23 +744,6 @@ dapr run --app-port 6001 --app-id order-processor --app-protocol http --dapr-htt In the `order-processor` subscriber, we're subscribing to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. This enables your app code to talk to the Redis component instance through the Dapr sidecar. ```go -var sub = &common.Subscription{ - PubsubName: "order_pub_sub", - Topic: "orders", - Route: "orders", -} - -func main() { - s := daprd.NewService(":6001") - http.HandleFunc("/orders", handleRequest) - if err := s.AddTopicEventHandler(sub, eventHandler); err != nil { - log.Fatalf("error adding topic subscription: %v", err) - } - if err := s.Start(); err != nil && err != http.ErrServerClosed { - log.Fatalf("error listenning: %v", err) - } -} - func eventHandler(ctx context.Context, e *common.TopicEvent) (retry bool, err error) { fmt.Println("Subscriber received: ", e.Data) return false, nil From 4ed0d1b5e43ac234c9ac6f866588585423885559 Mon Sep 17 00:00:00 2001 From: Hannah Hunter Date: Tue, 8 Mar 2022 15:50:02 -0600 Subject: [PATCH 09/24] Update output values Signed-off-by: Hannah Hunter --- .../quickstarts/pubsub-quickstart.md | 86 +++++++++---------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 062795b3f..86c85edfa 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -276,33 +276,33 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: ```cli -== APP == Published data: {"orderId":612} -== APP == Published data: {"orderId":59} -== APP == Published data: {"orderId":75} -== APP == Published data: {"orderId":257} -== APP == Published data: {"orderId":606} -== APP == Published data: {"orderId":568} -== APP == Published data: {"orderId":581} -== APP == Published data: {"orderId":977} -== APP == Published data: {"orderId":92} -== APP == Published data: {"orderId":650} -== APP == Published data: {"orderId":225} +== APP == Published data: {"orderId":1} +== APP == Published data: {"orderId":2} +== APP == Published data: {"orderId":3} +== APP == Published data: {"orderId":4} +== APP == Published data: {"orderId":5} +== APP == Published data: {"orderId":6} +== APP == Published data: {"orderId":7} +== APP == Published data: {"orderId":8} +== APP == Published data: {"orderId":9} +== APP == Published data: {"orderId":10} + ``` Subscriber output: ```cli -== APP == Subscriber received: {"orderId":612} -== APP == Subscriber received: {"orderId":59} -== APP == Subscriber received: {"orderId":75} -== APP == Subscriber received: {"orderId":257} -== APP == Subscriber received: {"orderId":606} -== APP == Subscriber received: {"orderId":568} -== APP == Subscriber received: {"orderId":581} -== APP == Subscriber received: {"orderId":977} -== APP == Subscriber received: {"orderId":92} -== APP == Subscriber received: {"orderId":650} -== APP == Subscriber received: {"orderId":225} +== APP == Subscriber received: {"orderId":1} +== APP == Subscriber received: {"orderId":2} +== APP == Subscriber received: {"orderId":3} +== APP == Subscriber received: {"orderId":4} +== APP == Subscriber received: {"orderId":5} +== APP == Subscriber received: {"orderId":6} +== APP == Subscriber received: {"orderId":7} +== APP == Subscriber received: {"orderId":8} +== APP == Subscriber received: {"orderId":9} +== APP == Subscriber received: {"orderId":10} + ``` #### `pubsub.yaml` component file @@ -437,31 +437,31 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: ```dotnetcli -== APP == Published data: Order { OrderId = 381 } -== APP == Published data: Order { OrderId = 917 } -== APP == Published data: Order { OrderId = 292 } -== APP == Published data: Order { OrderId = 722 } -== APP == Published data: Order { OrderId = 262 } -== APP == Published data: Order { OrderId = 507 } -== APP == Published data: Order { OrderId = 73 } -== APP == Published data: Order { OrderId = 21 } -== APP == Published data: Order { OrderId = 983 } -== APP == Published data: Order { OrderId = 886 } +== APP == Published data: Order { OrderId = 1 } +== APP == Published data: Order { OrderId = 2 } +== APP == Published data: Order { OrderId = 3 } +== APP == Published data: Order { OrderId = 4 } +== APP == Published data: Order { OrderId = 5 } +== APP == Published data: Order { OrderId = 6 } +== APP == Published data: Order { OrderId = 7 } +== APP == Published data: Order { OrderId = 8 } +== APP == Published data: Order { OrderId = 9 } +== APP == Published data: Order { OrderId = 10 } ``` Subscriber output: ```dotnetcli -== APP == Subscriber received: Order { OrderId = 381 } -== APP == Subscriber received: Order { OrderId = 917 } -== APP == Subscriber received: Order { OrderId = 292 } -== APP == Subscriber received: Order { OrderId = 722 } -== APP == Subscriber received: Order { OrderId = 262 } -== APP == Subscriber received: Order { OrderId = 507 } -== APP == Subscriber received: Order { OrderId = 73 } -== APP == Subscriber received: Order { OrderId = 21 } -== APP == Subscriber received: Order { OrderId = 983 } -== APP == Subscriber received: Order { OrderId = 886 } +== APP == Subscriber received: Order { OrderId = 1 } +== APP == Subscriber received: Order { OrderId = 2 } +== APP == Subscriber received: Order { OrderId = 3 } +== APP == Subscriber received: Order { OrderId = 4 } +== APP == Subscriber received: Order { OrderId = 5 } +== APP == Subscriber received: Order { OrderId = 6 } +== APP == Subscriber received: Order { OrderId = 7 } +== APP == Subscriber received: Order { OrderId = 8 } +== APP == Subscriber received: Order { OrderId = 9 } +== APP == Subscriber received: Order { OrderId = 10 } ``` #### `pubsub.yaml` component file @@ -606,7 +606,6 @@ Notice, as specified in the code above, the publisher pushes a random number to Publisher output: ``` -== APP == 2171 [main] INFO com.service.CheckoutServiceApplication - Published data: 0 == APP == 7194 [main] INFO com.service.CheckoutServiceApplication - Published data: 1 == APP == 12213 [main] INFO com.service.CheckoutServiceApplication - Published data: 2 == APP == 17233 [main] INFO com.service.CheckoutServiceApplication - Published data: 3 @@ -622,7 +621,6 @@ Publisher output: Subscriber output: ``` -== APP == 2022-03-07 13:31:19.551 INFO 43512 --- [nio-8080-exec-1] c.s.c.OrderProcessingServiceController : Subscriber received: 0 == APP == 2022-03-07 13:31:19.551 INFO 43512 --- [nio-8080-exec-5] c.s.c.OrderProcessingServiceController : Subscriber received: 1 == APP == 2022-03-07 13:31:19.552 INFO 43512 --- [nio-8080-exec-9] c.s.c.OrderProcessingServiceController : Subscriber received: 2 == APP == 2022-03-07 13:31:19.551 INFO 43512 --- [nio-8080-exec-6] c.s.c.OrderProcessingServiceController : Subscriber received: 3 From d6da4f01e394644d7ed2f66eb155e0503416e8e4 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Tue, 8 Mar 2022 16:21:20 -0800 Subject: [PATCH 10/24] Remove extra file Signed-off-by: Nick Greenfield --- .../getting-started/get-started-component.md | 95 ------------------- 1 file changed, 95 deletions(-) delete mode 100644 daprdocs/content/en/getting-started/get-started-component.md diff --git a/daprdocs/content/en/getting-started/get-started-component.md b/daprdocs/content/en/getting-started/get-started-component.md deleted file mode 100644 index 5e16201db..000000000 --- a/daprdocs/content/en/getting-started/get-started-component.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -type: docs -title: "Define a component" -linkTitle: "Define a component" -weight: 40 ---- - -In the [previous step]({{}}) you called the Dapr HTTP API to store and retrieve a state from a Redis backed state store. Dapr knew to use the Redis instance that was configured locally on your machine through default component definition files that were created when Dapr was initialized. - -When building an app, you most likely would create your own component file definitions depending on the building block and specific component that you'd like to use. - -As an example of how to define custom components for your application, you will now create a component definition file to interact with the [secrets building block]({{< ref secrets >}}). - -In this guide you will: -- Create a local JSON secret store -- Register the secret store with Dapr using a component definition file -- Obtain the secret using the Dapr HTTP API - -## Step 1: Create a JSON secret store - -While Dapr supports [many types of secret stores]({{< ref supported-secret-stores >}}), the easiest way to get started is a local JSON file with your secret (note this secret store is meant for development purposes and is not recommended for production use cases as it is not secured). - -Begin by saving the following JSON contents into a file named `mysecrets.json`: - -```json -{ - "my-secret" : "I'm Batman" -} -``` - -## Step 2: Create a secret store Dapr component - -Create a new directory named `my-components` to hold the new component file: - -```bash -mkdir my-components -``` - -Inside this directory create a new file `localSecretStore.yaml` with the following contents: - - -```yaml -apiVersion: dapr.io/v1alpha1 -kind: Component -metadata: - name: my-secret-store - namespace: default -spec: - type: secretstores.local.file - version: v1 - metadata: - - name: secretsFile - value: /mysecrets.json - - name: nestedSeparator - value: ":" -``` - -You can see that the above file definition has a `type: secretstores.local.file` which tells Dapr to use the local file component as a secret store. The metadata fields provide component specific information needed to work with this component (in this case, the path to the secret store JSON is relative to where you call `dapr run` from.) - -## Step 3: Run the Dapr sidecar - -Run the following command to launch a Dapr sidecar that will listen on port 3500 for a blank application named myapp: - -```bash -dapr run --app-id myapp --dapr-http-port 3500 --components-path ./my-components -``` - -> If you encounter a error message stating the app ID is already in use, it may be that the sidecar you ran in the previous step is still running. Make sure you stop the sidecar before running the above command using "Control-C" or running the command `dapr stop --app-id myapp`. - -## Step 4: Get a secret - -In a separate terminal run: - -{{< tabs "HTTP API (Bash)" "HTTP API (PowerShell)">}} -{{% codetab %}} - -```bash -curl http://localhost:3500/v1.0/secrets/my-secret-store/my-secret -``` -{{% /codetab %}} - -{{% codetab %}} -```powershell -Invoke-RestMethod -Uri 'http://localhost:3500/v1.0/secrets/my-secret-store/my-secret' -``` -{{% /codetab %}} -{{< /tabs >}} - -You should see output with the secret you stored in the JSON file. - -```json -{"my-secret":"I'm Batman"} -``` - -{{< button text="Next step: Explore Dapr quickstarts >>" page="quickstarts" >}} From 30fd67e2496d74ab84a5a5513ed012a7660e6a30 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Tue, 8 Mar 2022 16:29:33 -0800 Subject: [PATCH 11/24] Remove QS that are not yet available. Signed-off-by: Nick Greenfield --- daprdocs/content/en/getting-started/quickstarts/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/_index.md b/daprdocs/content/en/getting-started/quickstarts/_index.md index 40f2dc57f..48d80175c 100644 --- a/daprdocs/content/en/getting-started/quickstarts/_index.md +++ b/daprdocs/content/en/getting-started/quickstarts/_index.md @@ -23,8 +23,8 @@ Hit the ground running with our Dapr quickstarts, complete with code samples aim | Quickstarts | Description | | ----------- | ----------- | | [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | -| State Management | While we work on quickstarts for Dapr's State Management, get started with our [examples on GitHub](https://github.com/dapr/quickstarts/state_management). | -| Service Invocation | While we work on quickstarts for Dapr's Service Invocation, get started with our [examples on GitHub](https://github.com/dapr/quickstarts/service_invocation). | +| State Management | Coming soon. | +| Service Invocation | Coming soon. | | Bindings | Coming soon. | | Actors | Coming soon. | | Observability | Coming soon. | From 94365fde21a0a70db8700eed1c2d019a43171995 Mon Sep 17 00:00:00 2001 From: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com> Date: Wed, 9 Mar 2022 21:12:32 -0600 Subject: [PATCH 12/24] [Service invocation] Quickstart doc (#2244) * clean branch Signed-off-by: Hannah Hunter * update to intro, bring back image Signed-off-by: Hannah Hunter * output and intro update Signed-off-by: Hannah Hunter * Go typo Signed-off-by: Hannah Hunter * filter out conceptual language Signed-off-by: Hannah Hunter * remove 'individual' Signed-off-by: Hannah Hunter * rewording Signed-off-by: Hannah Hunter --- .../en/getting-started/quickstarts/_index.md | 2 +- .../serviceinvocation-quickstart.md | 620 ++++++++++++++++++ .../service-invocation-overview.png | Bin 0 -> 95216 bytes 3 files changed, 621 insertions(+), 1 deletion(-) create mode 100644 daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md create mode 100644 daprdocs/static/images/serviceinvocation-quickstart/service-invocation-overview.png diff --git a/daprdocs/content/en/getting-started/quickstarts/_index.md b/daprdocs/content/en/getting-started/quickstarts/_index.md index 48d80175c..25feca2c9 100644 --- a/daprdocs/content/en/getting-started/quickstarts/_index.md +++ b/daprdocs/content/en/getting-started/quickstarts/_index.md @@ -24,7 +24,7 @@ Hit the ground running with our Dapr quickstarts, complete with code samples aim | ----------- | ----------- | | [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | | State Management | Coming soon. | -| Service Invocation | Coming soon. | +| [Service Invocation]({{< ref serviceinvocation-quickstart.md >}}) | Invoke a method using HTTP proxying with Dapr's Service Invocation building block. | | Bindings | Coming soon. | | Actors | Coming soon. | | Observability | Coming soon. | diff --git a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md new file mode 100644 index 000000000..5abe55a23 --- /dev/null +++ b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md @@ -0,0 +1,620 @@ +--- +type: docs +title: "Quickstart: Service Invocation" +linkTitle: "Service Invocation" +weight: 70 +description: "Get started with Dapr's Service Invocation building block" +--- + +With [Dapr's Service Invocation building block](https://docs.dapr.io/developing-applications/building-blocks/service-invocation), your application can communicate reliably and securely with other applications. + +Diagram showing the steps of service invocation + +Dapr offers several methods for service invocation, which you can choose depending on your scenario. For this quickstart, you'll enable the checkout service to invoke a method using HTTP proxy in the order-processor service. + +Learn more about Dapr's methods for service invocation in the [overview article]({{< ref service-invocation-overview.md >}}). + +Select your preferred language before proceeding with the quickstart. + +{{< tabs "Python" "JavaScript" ".NET" "Java" "Go" >}} + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [Python 3.7+ installed](https://www.python.org/downloads/). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Run `checkout` service + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd service_invocation/python/http/checkout +``` + +Install the dependencies: + +```bash +pip3 install -r requirements.txt +``` + +Run the `checkout` service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- python3 app.py +``` + +In the `checkout` service, you'll notice there's no need to rewrite your app code to use Dapr's service invocation. You can enable service invocation by simply adding the `dapr-app-id` header, which specifies the ID of the target service. + +```python +headers = {'dapr-app-id': 'order-processor'} + +result = requests.post( + url='%s/orders' % (base_url), + data=json.dumps(order), + headers=headers +) +``` + +### Run `order-processor` service + +In a new terminal window, navigate to `order-processor` directory. + +```bash +cd service_invocation/python/http/order-processor +``` + +Install the dependencies: + +```bash +pip3 install -r requirements.txt +``` + +Run the `order-processor` service alongside a Dapr sidecar. + +```bash +dapr run --app-port 6001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- python3 app.py +``` + +```py +@app.route('/orders', methods=['POST']) +def getOrder(): + data = request.json + print('Order received : ' + json.dumps(data), flush=True) + return json.dumps({'success': True}), 200, { + 'ContentType': 'application/json'} + + +app.run(port=5001) +``` + +### View the Service Invocation outputs + +Dapr invokes an application on any Dapr instance. In the code, the sidecar programming model encourages each application to talk to its own instance of Dapr. The Dapr instances then discover and communicate with one another. + +`checkout` service output: + +``` +== APP == Order passed: {"orderId": 1} +== APP == Order passed: {"orderId": 2} +== APP == Order passed: {"orderId": 3} +== APP == Order passed: {"orderId": 4} +== APP == Order passed: {"orderId": 5} +== APP == Order passed: {"orderId": 6} +== APP == Order passed: {"orderId": 7} +== APP == Order passed: {"orderId": 8} +== APP == Order passed: {"orderId": 9} +== APP == Order passed: {"orderId": 10} +``` + +`order-processor` service output: + +``` +== APP == Order received: {"orderId": 1} +== APP == Order received: {"orderId": 2} +== APP == Order received: {"orderId": 3} +== APP == Order received: {"orderId": 4} +== APP == Order received: {"orderId": 5} +== APP == Order received: {"orderId": 6} +== APP == Order received: {"orderId": 7} +== APP == Order received: {"orderId": 8} +== APP == Order received: {"orderId": 9} +== APP == Order received: {"orderId": 10} +``` + +{{% /codetab %}} + + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [Latest Node.js installed](https://nodejs.org/en/download/). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Run `checkout` service + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd service_invocation/javascript/http/checkout +``` + +Install the dependencies: + +```bash +npm install +``` + +Run the `checkout` service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- npm start +``` + +In the `checkout` service, you'll notice there's no need to rewrite your app code to use Dapr's service invocation. You can enable service invocation by simply adding the `dapr-app-id` header, which specifies the ID of the target service. + +```javascript +let axiosConfig = { + headers: { + "dapr-app-id": "order-processor" + } +}; + const res = await axios.post(`${DAPR_HOST}:${DAPR_HTTP_PORT}/orders`, order , axiosConfig); + console.log("Order passed: " + res.config.data); +``` + +### Run `order-processor` service + +In a new terminal window, navigate to `order-processor` directory. + +```bash +cd service_invocation/javascript/http/order-processor +``` + +Install the dependencies: + +```bash +npm install +``` + +Run the `order-processor` service alongside a Dapr sidecar. + +```bash +dapr run --app-port 6001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- npm start +``` + +```javascript +app.post('/orders', (req, res) => { + console.log("Order received:", req.body); + res.sendStatus(200); +}); +``` + +### View the Service Invocation outputs + +Dapr invokes an application on any Dapr instance. In the code, the sidecar programming model encourages each application to talk to its own instance of Dapr. The Dapr instances then discover and communicate with one another. + +`checkout` service output: + +``` +== APP == Order passed: {"orderId": 1} +== APP == Order passed: {"orderId": 2} +== APP == Order passed: {"orderId": 3} +== APP == Order passed: {"orderId": 4} +== APP == Order passed: {"orderId": 5} +== APP == Order passed: {"orderId": 6} +== APP == Order passed: {"orderId": 7} +== APP == Order passed: {"orderId": 8} +== APP == Order passed: {"orderId": 9} +== APP == Order passed: {"orderId": 10} +``` + +`order-processor` service output: + +``` +== APP == Order received: {"orderId": 1} +== APP == Order received: {"orderId": 2} +== APP == Order received: {"orderId": 3} +== APP == Order received: {"orderId": 4} +== APP == Order received: {"orderId": 5} +== APP == Order received: {"orderId": 6} +== APP == Order received: {"orderId": 7} +== APP == Order received: {"orderId": 8} +== APP == Order received: {"orderId": 9} +== APP == Order received: {"orderId": 10} +``` + +{{% /codetab %}} + + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/en-us/download). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Run `checkout` service + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd service_invocation/csharp/http/checkout +``` + +Install the dependencies: + +```bash +dotnet restore +dotnet build +``` + +Run the `checkout` service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- npm start +``` + +In the `checkout` service, you'll notice there's no need to rewrite your app code to use Dapr's service invocation. You can enable service invocation by simply adding the `dapr-app-id` header, which specifies the ID of the target service. + +```csharp +var client = new HttpClient(); +client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + +client.DefaultRequestHeaders.Add("dapr-app-id", "order-processor"); + +var response = await client.PostAsync($"{baseURL}/orders", content); + Console.WriteLine("Order passed: " + order); +``` + +### Run `order-processor` service + +In a new terminal window, navigate to `order-processor` directory. + +```bash +cd service_invocation/csharp/http/order-processor +``` + +Install the dependencies: + +```bash +dotnet restore +dotnet build +``` + +Run the `order-processor` service alongside a Dapr sidecar. + +```bash +dapr run --app-port 6001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- npm start +``` + +```csharp +app.MapPost("/orders", async context => { + var data = await context.Request.ReadFromJsonAsync(); + Console.WriteLine("Order received : " + data); + await context.Response.WriteAsync(data.ToString()); +}); +``` + +### View the Service Invocation outputs + +Dapr invokes an application on any Dapr instance. In the code, the sidecar programming model encourages each application to talk to its own instance of Dapr. The Dapr instances then discover and communicate with one another. + +`checkout` service output: + +``` +== APP == Order passed: Order { OrderId: 1 } +== APP == Order passed: Order { OrderId: 2 } +== APP == Order passed: Order { OrderId: 3 } +== APP == Order passed: Order { OrderId: 4 } +== APP == Order passed: Order { OrderId: 5 } +== APP == Order passed: Order { OrderId: 6 } +== APP == Order passed: Order { OrderId: 7 } +== APP == Order passed: Order { OrderId: 8 } +== APP == Order passed: Order { OrderId: 9 } +== APP == Order passed: Order { OrderId: 10 } +``` + +`order-processor` service output: + +``` +== APP == Order received: Order { OrderId: 1 } +== APP == Order received: Order { OrderId: 2 } +== APP == Order received: Order { OrderId: 3 } +== APP == Order received: Order { OrderId: 4 } +== APP == Order received: Order { OrderId: 5 } +== APP == Order received: Order { OrderId: 6 } +== APP == Order received: Order { OrderId: 7 } +== APP == Order received: Order { OrderId: 8 } +== APP == Order received: Order { OrderId: 9 } +== APP == Order received: Order { OrderId: 10 } +``` + +{{% /codetab %}} + + +{{% codetab %}} + +### Pre-requisites + +For this example, you will need: + +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- Java JDK 11 (or greater): + - [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html#JDK11), or + - [OpenJDK](https://jdk.java.net/13/) +- [Apache Maven](https://maven.apache.org/install.html), version 3.x. +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Run `checkout` service + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd service_invocation/java/http/checkout +``` + +Install the dependencies: + +```bash +mvn clean install +``` + +Run the `checkout` service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- java -jar target/CheckoutService-0.0.1-SNAPSHOT.jar +``` + +In the `checkout` service, you'll notice there's no need to rewrite your app code to use Dapr's service invocation. You can enable service invocation by simply adding the `dapr-app-id` header, which specifies the ID of the target service. + +```java +.header("Content-Type", "application/json") +.header("dapr-app-id", "order-processor") + +HttpResponse response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); +System.out.println("Order passed: "+ orderId) +``` + +### Run `order-processor` service + +In a new terminal window, navigate to `order-processor` directory. + +```bash +cd service_invocation/java/http/order-processor +``` + +Install the dependencies: + +```bash +mvn clean install +``` + +Run the `order-processor` service alongside a Dapr sidecar. + +```bash +dapr run --app-id order-processor --app-port 6001 --app-protocol http --dapr-http-port 3501 -- java -jar target/OrderProcessingService-0.0.1-SNAPSHOT.jar +``` + +```java +public String processOrders(@RequestBody Order body) { + System.out.println("Order received: "+ body.getOrderId()); + return "CID" + body.getOrderId(); + } +``` + +### View the Service Invocation outputs + +Dapr invokes an application on any Dapr instance. In the code, the sidecar programming model encourages each application to talk to its own instance of Dapr. The Dapr instances then discover and communicate with one another. + +`checkout` service output: + +``` +== APP == Order passed: 1 +== APP == Order passed: 2 +== APP == Order passed: 3 +== APP == Order passed: 4 +== APP == Order passed: 5 +== APP == Order passed: 6 +== APP == Order passed: 7 +== APP == Order passed: 8 +== APP == Order passed: 9 +== APP == Order passed: 10 +``` + +`order-processor` service output: + +``` +== APP == Order received: 1 +== APP == Order received: 2 +== APP == Order received: 3 +== APP == Order received: 4 +== APP == Order received: 5 +== APP == Order received: 6 +== APP == Order received: 7 +== APP == Order received: 8 +== APP == Order received: 9 +== APP == Order received: 10 +``` + +{{% /codetab %}} + + +{{% codetab %}} + +### 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/). +- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +### Step 1: Set up the environment + +Clone the sample we've provided. + +```bash +git clone https://github.com/dapr/quickstarts.git +``` + +### Run `checkout` service + +In a terminal window, navigate to the `checkout` directory. + +```bash +cd service_invocation/go/http/checkout +``` + +Install the dependencies: + +```bash +go build app.go +``` + +Run the `checkout` service alongside a Dapr sidecar. + +```bash +dapr run --app-id checkout --app-protocol http --dapr-http-port 3500 -- go run app.go +``` + +In the `checkout` service, you'll notice there's no need to rewrite your app code to use Dapr's service invocation. You can enable service invocation by simply adding the `dapr-app-id` header, which specifies the ID of the target service. + +```go +req.Header.Add("dapr-app-id", "order-processor") + +response, err := client.Do(req) + +if err != nil { + fmt.Print(err.Error()) + os.Exit(1) + } + + result, err := ioutil.ReadAll(response.Body) + if err != nil { + log.Fatal(err) + } + + log.Println("Order passed: ", string(result)) +``` + +### Run `order-processor` service + +In a new terminal window, navigate to `order-processor` directory. + +```bash +cd service_invocation/go/http/order-processor +``` + +Install the dependencies: + +```bash +go build app.go +``` + +Run the `order-processor` service alongside a Dapr sidecar. + +```bash +dapr run --app-port 6001 --app-id order-processor --app-protocol http --dapr-http-port 3501 -- go run app.go +``` + +```go +func getOrder(w http.ResponseWriter, r *http.Request) { + data, err := ioutil.ReadAll(r.Body) + if err != nil { + log.Fatal(err) + } + log.Printf("Order received : %s", string(data)) +``` + +### View the Service Invocation outputs + +Dapr invokes an application on any Dapr instance. In the code, the sidecar programming model encourages each application to talk to its own instance of Dapr. The Dapr instances then discover and communicate with one another. + +`checkout` service output: + +``` +== APP == Order passed: "{\"orderId\":1}" +== APP == Order passed: "{\"orderId\":2}" +== APP == Order passed: "{\"orderId\":3}" +== APP == Order passed: "{\"orderId\":4}" +== APP == Order passed: "{\"orderId\":5}" +== APP == Order passed: "{\"orderId\":6}" +== APP == Order passed: "{\"orderId\":7}" +== APP == Order passed: "{\"orderId\":8}" +== APP == Order passed: "{\"orderId\":9}" +== APP == Order passed: "{\"orderId\":10}" +``` + +`order-processor` service output: + +``` +== APP == Order received : {"orderId":1} +== APP == Order received : {"orderId":2} +== APP == Order received : {"orderId":3} +== APP == Order received : {"orderId":4} +== APP == Order received : {"orderId":5} +== APP == Order received : {"orderId":6} +== APP == Order received : {"orderId":7} +== APP == Order received : {"orderId":8} +== APP == Order received : {"orderId":9} +== APP == Order received : {"orderId":10} +``` + +{{% /codetab %}} + +{{% /tabs %}} + +## Next Steps + +- Learn more about [Service Invocation as a Dapr building block]({{< ref service-invocation-overview.md >}}) +- Learn more about how to invoke Dapr's Service Invocation with: + - [HTTP]({{< ref howto-invoke-discover-services.md >}}), or + - [gRPC]({{< ref howto-invoke-services-grpc.md >}}) +- Learn about [Service Invocation namespaces]({{< ref service-invocation-namespaces.md >}}) +- Learn more about [Dapr component scopes]({{< ref component-scopes.md >}}) + +{{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} \ No newline at end of file diff --git a/daprdocs/static/images/serviceinvocation-quickstart/service-invocation-overview.png b/daprdocs/static/images/serviceinvocation-quickstart/service-invocation-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0cbba4f4969d05252378995af8536ab88ea43a GIT binary patch literal 95216 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
diff --git a/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-dapr-services.md b/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-dapr-services.md index 17f71eab5..893376e97 100644 --- a/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-dapr-services.md +++ b/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-dapr-services.md @@ -111,4 +111,4 @@ All done. Now you can point to port 40000 and start a remote debug session from - [Overview of Dapr on Kubernetes]({{< ref kubernetes-overview >}}) - [Deploy Dapr to a Kubernetes cluster]({{< ref kubernetes-deploy >}}) -- [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes) +- [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes) diff --git a/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-daprd.md b/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-daprd.md index ac38d8257..3b13efc5a 100644 --- a/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-daprd.md +++ b/daprdocs/content/en/developing-applications/debugging/debug-k8s/debug-daprd.md @@ -42,7 +42,7 @@ Then step into 'dapr' directory from your cloned [dapr/dapr repository](https:// helm install dapr charts/dapr --namespace dapr-system --values values.yml --wait ``` -To enable debug mode for daprd, you need to put an extra annotation `dapr.io/enable-debug` in your application's deployment file. Let's use [quickstarts/hello-kubernetes](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes) as an example. Modify 'deploy/node.yaml' like below: +To enable debug mode for daprd, you need to put an extra annotation `dapr.io/enable-debug` in your application's deployment file. Let's use [quickstarts/hello-kubernetes](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes) as an example. Modify 'deploy/node.yaml' like below: ```diff diff --git a/hello-kubernetes/deploy/node.yaml b/hello-kubernetes/deploy/node.yaml @@ -61,7 +61,7 @@ index 23185a6..6cdb0ae 100644 The annotation `dapr.io/enable-debug` will hint Dapr injector to inject Dapr sidecar into the debug mode. You can also specify the debug port with annotation `dapr.io/debug-port`, otherwise the default port will be "40000". -Deploy the application with the following command. For the complete guide refer to the [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes): +Deploy the application with the following command. For the complete guide refer to the [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes): ```bash kubectl apply -f ./deploy/node.yaml @@ -92,4 +92,4 @@ All done. Now you can point to port 40000 and start a remote debug session to da - [Overview of Dapr on Kubernetes]({{< ref kubernetes-overview >}}) - [Deploy Dapr to a Kubernetes cluster]({{< ref kubernetes-deploy >}}) - [Debug Dapr services on Kubernetes]({{< ref debug-dapr-services >}}) -- [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes) \ No newline at end of file +- [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes) \ No newline at end of file diff --git a/daprdocs/content/en/developing-applications/ides/vscode/vscode-how-to-debug-multiple-dapr-apps.md b/daprdocs/content/en/developing-applications/ides/vscode/vscode-how-to-debug-multiple-dapr-apps.md index 92451972b..2972a29dd 100644 --- a/daprdocs/content/en/developing-applications/ides/vscode/vscode-how-to-debug-multiple-dapr-apps.md +++ b/daprdocs/content/en/developing-applications/ides/vscode/vscode-how-to-debug-multiple-dapr-apps.md @@ -18,12 +18,12 @@ dapr run --app-id nodeapp --app-port 3000 --dapr-http-port 3500 app.js One approach to attaching the debugger to your service is to first run daprd with the correct arguments from the command line and then launch your code and attach the debugger. While this is a perfectly acceptable solution, it does require a few extra steps and some instruction to developers who might want to clone your repo and hit the "play" button to begin debugging. -If your application is a collection of microservices, each with a Dapr sidecar, it will be useful to debug them together in Visual Studio Code. This page will use the [hello world quickstart](https://github.com/dapr/quickstarts/tree/master/hello-world) to showcase how to configure VSCode to debug multiple Dapr application using [VSCode debugging](https://code.visualstudio.com/Docs/editor/debugging). +If your application is a collection of microservices, each with a Dapr sidecar, it will be useful to debug them together in Visual Studio Code. This page will use the [hello world quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-world) to showcase how to configure VSCode to debug multiple Dapr application using [VSCode debugging](https://code.visualstudio.com/Docs/editor/debugging). ## Prerequisites - Install the [Dapr extension]({{< ref vscode-dapr-extension.md >}}). You will be using the [tasks](https://code.visualstudio.com/docs/editor/tasks) it offers later on. -- Optionally clone the [hello world quickstart](https://github.com/dapr/quickstarts/tree/master/hello-world) +- Optionally clone the [hello world quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-world) ## Step 1: Configure launch.json diff --git a/daprdocs/content/en/operations/configuration/invoke-allowlist.md b/daprdocs/content/en/operations/configuration/invoke-allowlist.md index 288e3e5fd..7be05a73c 100644 --- a/daprdocs/content/en/operations/configuration/invoke-allowlist.md +++ b/daprdocs/content/en/operations/configuration/invoke-allowlist.md @@ -235,7 +235,7 @@ spec: ``` ### Self-hosted mode -This example uses the [hello world](https://github.com/dapr/quickstarts/tree/master/hello-world/README.md) quickstart. +This example uses the [hello world](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-world/README.md) quickstart. The following steps run the Sentry service locally with mTLS enabled, set up necessary environment variables to access certificates, and then launch both the node app and python app each referencing the Sentry service to apply the ACLs. @@ -318,7 +318,7 @@ The following steps run the Sentry service locally with mTLS enabled, set up nec 8. You should see the calls to the node app fail in the python app command prompt based due to the **deny** operation action in the nodeappconfig file. Change this action to **allow** and re-run the apps and you should then see this call succeed. ### Kubernetes mode -This example uses the [hello kubernetes](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes/README.md) quickstart. +This example uses the [hello kubernetes](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes/README.md) quickstart. You can create and apply the above configuration files `nodeappconfig.yaml` and `pythonappconfig.yaml` as described in the [configuration]({{< ref "configuration-concept.md" >}}) to the Kubernetes deployments. diff --git a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-overview.md b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-overview.md index 3dd78d406..613566df3 100644 --- a/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-overview.md +++ b/daprdocs/content/en/operations/hosting/kubernetes/kubernetes-overview.md @@ -42,7 +42,7 @@ For information about pulling your application images from a private registry, r ## Quickstart -You can see some examples [here](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes) in the Kubernetes getting started quickstart. +You can see some examples [here](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes) in the Kubernetes getting started quickstart. ## Supported versions Dapr support for Kubernetes is aligned with [Kubernetes Version Skew Policy](https://kubernetes.io/releases/version-skew-policy). @@ -52,5 +52,5 @@ Dapr support for Kubernetes is aligned with [Kubernetes Version Skew Policy](htt - [Deploy Dapr to a Kubernetes cluster]({{< ref kubernetes-deploy >}}) - [Upgrade Dapr on a Kubernetes cluster]({{< ref kubernetes-upgrade >}}) - [Production guidelines for Dapr on Kubernetes]({{< ref kubernetes-production.md >}}) -- [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/hello-kubernetes) +- [Dapr Kubernetes Quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/hello-kubernetes) - [Use Bridge to Kubernetes to debug Dapr apps locally, while connected to your Kubernetes cluster]({{< ref bridge-to-kubernetes >}}) diff --git a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md index a03a16b8a..4fe2c95a7 100644 --- a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md +++ b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md @@ -55,7 +55,7 @@ spec: dapr.io/config: "appconfig" ``` -Some of the quickstarts such as [distributed calculator](https://github.com/dapr/quickstarts/tree/master/distributed-calculator) already configure these settings, so if you are using those no additional settings are needed. +Some of the quickstarts such as [distributed calculator](https://github.com/dapr/quickstarts/tree/master/tutorials/distributed-calculator) already configure these settings, so if you are using those no additional settings are needed. That's it! There's no need include any SDKs or instrument your application code. Dapr automatically handles the distributed tracing for you. diff --git a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md index b1fbf724d..70f616ffa 100644 --- a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md +++ b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md @@ -57,7 +57,7 @@ spec: dapr.io/config: "appconfig" ``` -Some of the quickstarts such as [distributed calculator](https://github.com/dapr/quickstarts/tree/master/distributed-calculator) already configure these settings, so if you are using those no additional settings are needed. +Some of the quickstarts such as [distributed calculator](https://github.com/dapr/quickstarts/tree/master/tutorials/distributed-calculator) already configure these settings, so if you are using those no additional settings are needed. That's it! There's no need include any SDKs or instrument your application code. Dapr automatically handles the distributed tracing for you. diff --git a/daprdocs/content/en/reference/api/pubsub_api.md b/daprdocs/content/en/reference/api/pubsub_api.md index c751d9c21..0e6193038 100644 --- a/daprdocs/content/en/reference/api/pubsub_api.md +++ b/daprdocs/content/en/reference/api/pubsub_api.md @@ -168,4 +168,4 @@ Dapr Pub/Sub adheres to version 1.0 of CloudEvents. ## Related links * [How to publish to and consume topics]({{< ref howto-publish-subscribe.md >}}) -* [Sample for pub/sub](https://github.com/dapr/quickstarts/tree/master/pu_sub) +* [Sample for pub/sub](https://github.com/dapr/quickstarts/tree/master/pub_sub) From 537a56602eee0ce39f03e0fc1f81eb259b5ff467 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Fri, 18 Mar 2022 16:51:04 -0700 Subject: [PATCH 23/24] Add ignore around docker links Signed-off-by: Nick Greenfield --- .../vscode/vscode-remote-dev-containers.md | 2 ++ .../quickstarts/pubsub-quickstart.md | 20 ++++++++++++++----- .../serviceinvocation-quickstart.md | 20 ++++++++++++++----- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/daprdocs/content/en/developing-applications/ides/vscode/vscode-remote-dev-containers.md b/daprdocs/content/en/developing-applications/ides/vscode/vscode-remote-dev-containers.md index aaf6a583c..eaaa92d68 100644 --- a/daprdocs/content/en/developing-applications/ides/vscode/vscode-remote-dev-containers.md +++ b/daprdocs/content/en/developing-applications/ides/vscode/vscode-remote-dev-containers.md @@ -13,7 +13,9 @@ Dapr has pre-built Docker remote containers for NodeJS and C#. You can pick the ### Setup a remote dev container #### Prerequisites + - [Docker Desktop](https://www.docker.com/products/docker-desktop) + - [Visual Studio Code](https://code.visualstudio.com/) - [VSCode Remote Development extension pack](https://aka.ms/vscode-remote/download/extension) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index ebc0027b1..897d8c89b 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -26,7 +26,9 @@ For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [Python 3.7+ installed](https://www.python.org/downloads/). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -193,7 +195,9 @@ For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [Latest Node.js installed](https://nodejs.org/download/). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -345,7 +349,9 @@ For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/download). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -497,7 +503,9 @@ For this example, you will need: - [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html#JDK11), or - [OpenJDK](https://jdk.java.net/13/) - [Apache Maven](https://maven.apache.org/install.html), version 3.x. -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -655,7 +663,9 @@ 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/). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment diff --git a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md index 91d51366e..bb0320d8e 100644 --- a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md @@ -26,7 +26,9 @@ For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [Python 3.7+ installed](https://www.python.org/downloads/). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -145,7 +147,9 @@ For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [Latest Node.js installed](https://nodejs.org/). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -259,7 +263,9 @@ For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/download). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -379,7 +385,9 @@ For this example, you will need: - [Oracle JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html#JDK11), or - [OpenJDK](https://jdk.java.net/13/) - [Apache Maven](https://maven.apache.org/install.html), version 3.x. -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment @@ -491,7 +499,9 @@ 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/). -- [Docker Desktop](https://www.docker.com/products/docker-desktop). + +- [Docker Desktop](https://www.docker.com/products/docker-desktop) + ### Step 1: Set up the environment From a65c1e43414cc0ce8b25e10d30967cee4d05aa80 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Fri, 18 Mar 2022 16:59:31 -0700 Subject: [PATCH 24/24] Fix more broken QS links Signed-off-by: Nick Greenfield --- .../getting-started/quickstarts/pubsub-quickstart.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 897d8c89b..1feab4bbb 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -806,11 +806,11 @@ Join the discussion in our [discord channel](https://discord.gg/22ZtJrNe). ## Next steps - Set up Pub/sub using HTTP instead of an SDK. - - [Python](https://github.com/dapr/quickstarts/pub_sub/python/http) - - [JavaScript](https://github.com/dapr/quickstarts/pub_sub/javascript/http) - - [.NET](https://github.com/dapr/quickstarts/pub_sub/csharp/http) - - [Java](https://github.com/dapr/quickstarts/pub_sub/java/http) - - [Go](https://github.com/dapr/quickstarts/pub_sub/go/http) + - [Python](https://github.com/dapr/quickstarts/tree/master/pub_sub/python/http) + - [JavaScript](https://github.com/dapr/quickstarts/tree/master/pub_sub/javascript/http) + - [.NET](https://github.com/dapr/quickstarts/tree/master/pub_sub/csharp/http) + - [Java](https://github.com/dapr/quickstarts/tree/master/pub_sub/java/http) + - [Go](https://github.com/dapr/quickstarts/tree/master/pub_sub/go/http) - Learn more about [Pub/sub as a Dapr building block]({{< ref pubsub-overview >}}) {{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} \ No newline at end of file

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 dztfe~ Date: Thu, 10 Mar 2022 10:09:57 -0800 Subject: [PATCH 13/24] Remove hard coded language in url Signed-off-by: Nick Greenfield --- .../quickstarts/serviceinvocation-quickstart.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md index 5abe55a23..b44dbf345 100644 --- a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md @@ -144,7 +144,9 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). + - [Latest Node.js installed](https://nodejs.org/en/download/). + - [Docker Desktop](https://www.docker.com/products/docker-desktop). ### Step 1: Set up the environment @@ -258,7 +260,9 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr For this example, you will need: - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). + - [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/en-us/download). + - [Docker Desktop](https://www.docker.com/products/docker-desktop). ### Step 1: Set up the environment @@ -617,4 +621,4 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr - Learn about [Service Invocation namespaces]({{< ref service-invocation-namespaces.md >}}) - Learn more about [Dapr component scopes]({{< ref component-scopes.md >}}) -{{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} \ No newline at end of file +{{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} From 7c50a49622df1f13d6b43134496f13a13aa6747f Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Thu, 10 Mar 2022 10:17:00 -0800 Subject: [PATCH 14/24] Move ignore links wrapper outside bullet list Signed-off-by: Nick Greenfield --- .../quickstarts/serviceinvocation-quickstart.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md index b44dbf345..32fd48829 100644 --- a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md @@ -143,11 +143,11 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr For this example, you will need: -- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [Latest Node.js installed](https://nodejs.org/en/download/). - - [Docker Desktop](https://www.docker.com/products/docker-desktop). + ### Step 1: Set up the environment @@ -259,11 +259,11 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr For this example, you will need: -- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). +- [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). - [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/en-us/download). - - [Docker Desktop](https://www.docker.com/products/docker-desktop). + ### Step 1: Set up the environment From 6884dc1cb67b326fcb4f1db6cf4a9869e4d6d0fb Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Tue, 15 Mar 2022 10:07:00 -0700 Subject: [PATCH 15/24] Reorder quickstarts table Signed-off-by: Nick Greenfield --- daprdocs/content/en/getting-started/quickstarts/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/_index.md b/daprdocs/content/en/getting-started/quickstarts/_index.md index 25feca2c9..3c2dd3674 100644 --- a/daprdocs/content/en/getting-started/quickstarts/_index.md +++ b/daprdocs/content/en/getting-started/quickstarts/_index.md @@ -22,9 +22,9 @@ Hit the ground running with our Dapr quickstarts, complete with code samples aim | Quickstarts | Description | | ----------- | ----------- | +| [Service Invocation]({{< ref serviceinvocation-quickstart.md >}}) | Invoke a method using HTTP proxying with Dapr's Service Invocation building block. | | [Publish and Subscribe]({{< ref pubsub-quickstart.md >}}) | Get started with Dapr's Publish and Subscribe building block. | | State Management | Coming soon. | -| [Service Invocation]({{< ref serviceinvocation-quickstart.md >}}) | Invoke a method using HTTP proxying with Dapr's Service Invocation building block. | | Bindings | Coming soon. | | Actors | Coming soon. | | Observability | Coming soon. | From 261c74b171e532a9f78316dc442e1d450f03e7eb Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Tue, 15 Mar 2022 16:21:19 -0700 Subject: [PATCH 16/24] Add discord feedback text Signed-off-by: Nick Greenfield --- .../getting-started/quickstarts/pubsub-quickstart.md | 12 ++++++------ .../quickstarts/serviceinvocation-quickstart.md | 11 ++++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 86c85edfa..1cb5fd962 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -812,6 +812,11 @@ In the YAML file: {{< /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.gg/22ZtJrNe). + ## Next steps - Set up Pub/sub using HTTP instead of an SDK. @@ -820,11 +825,6 @@ In the YAML file: - [.NET](https://github.com/dapr/quickstarts/pub_sub/csharp/http) - [Java](https://github.com/dapr/quickstarts/pub_sub/java/http) - [Go](https://github.com/dapr/quickstarts/pub_sub/go/http) -- Learn about [Pub/sub routing]({{< ref howto-route-messages >}}) -- Learn about [topic scoping]({{< ref pubsub-scopes.md >}}) -- Learn about [message time-to-live]({{< ref pubsub-message-ttl.md >}}) -- Learn [how to configure Pub/sub components with multiple namespaces]({{< ref pubsub-namespaces.md >}}) -- List of [Pub/sub components]({{< ref setup-pubsub >}}) -- Read the [API reference]({{< ref pubsub_api.md >}}) +- Learn more about [Pub/sub as a Dapr building block]({{< ref pubsub-overview >}}) {{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} \ No newline at end of file diff --git a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md index 32fd48829..efc6f016c 100644 --- a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md @@ -143,11 +143,9 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr For this example, you will need: - - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). -- [Latest Node.js installed](https://nodejs.org/en/download/). +- [Latest Node.js installed](https://nodejs.org/). - [Docker Desktop](https://www.docker.com/products/docker-desktop). - ### Step 1: Set up the environment @@ -612,13 +610,16 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr {{% /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.gg/22ZtJrNe). + ## Next Steps - Learn more about [Service Invocation as a Dapr building block]({{< ref service-invocation-overview.md >}}) - Learn more about how to invoke Dapr's Service Invocation with: - [HTTP]({{< ref howto-invoke-discover-services.md >}}), or - [gRPC]({{< ref howto-invoke-services-grpc.md >}}) -- Learn about [Service Invocation namespaces]({{< ref service-invocation-namespaces.md >}}) -- Learn more about [Dapr component scopes]({{< ref component-scopes.md >}}) {{< button text="Explore Dapr tutorials >>" page="getting-started/tutorials/_index.md" >}} From bea7e10ba7820d63104b9a1b9bc42390ec931cf6 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Wed, 16 Mar 2022 09:26:27 -0700 Subject: [PATCH 17/24] Remove hardcoded localized link Signed-off-by: Nick Greenfield --- .../quickstarts/serviceinvocation-quickstart.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md index efc6f016c..91d51366e 100644 --- a/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/serviceinvocation-quickstart.md @@ -257,11 +257,9 @@ Dapr invokes an application on any Dapr instance. In the code, the sidecar progr For this example, you will need: - - [Dapr CLI and initialized environment](https://docs.dapr.io/getting-started). -- [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/en-us/download). +- [.NET SDK or .NET 6 SDK installed](https://dotnet.microsoft.com/download). - [Docker Desktop](https://www.docker.com/products/docker-desktop). - ### Step 1: Set up the environment From 6ec81706ff1750b87b1d7bd680c70251ac845528 Mon Sep 17 00:00:00 2001 From: Hannah Hunter <94493363+hhunter-ms@users.noreply.github.com> Date: Thu, 17 Mar 2022 17:52:39 -0500 Subject: [PATCH 18/24] [pub/sub] Trim code snippets (#2270) * code snippets Signed-off-by: Hannah Hunter * add back in dapr client Signed-off-by: Hannah Hunter * put java subscribe back Signed-off-by: Hannah Hunter --- .../quickstarts/pubsub-quickstart.md | 58 ++++++------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md index 1cb5fd962..ebc0027b1 100644 --- a/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md +++ b/daprdocs/content/en/getting-started/quickstarts/pubsub-quickstart.md @@ -59,17 +59,14 @@ dapr run --app-id checkout --components-path ../../../components/ -- python3 app In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: ```python -while True: - order = {'orderid': random.randint(1, 1000)} - - with DaprClient() as client: - # Publish an event/message using Dapr PubSub - result = client.publish_event( - pubsub_name='order_pub_sub', - topic_name='orders', - data=json.dumps(order), - data_content_type='application/json', - ) +with DaprClient() as client: + # Publish an event/message using Dapr PubSub + result = client.publish_event( + pubsub_name='order_pub_sub', + topic_name='orders', + data=json.dumps(order), + data_content_type='application/json', + ) ``` ### Step 3: Subscribe to topics @@ -382,19 +379,9 @@ dapr run --app-id checkout --components-path ../../components -- dotnet run In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: ```cs -while(true) { - Random random = new Random(); - var order = new Order(random.Next(1,1000)); - using var client = new DaprClientBuilder().Build(); - - // Publish an event/message using Dapr PubSub - await client.PublishEventAsync("order_pub_sub", "orders", order); - Console.WriteLine("Published data: " + order); - - await Task.Delay(TimeSpan.FromSeconds(1)); -} - -public record Order([property: JsonPropertyName("orderId")] int OrderId); +using var client = new DaprClientBuilder().Build(); +await client.PublishEventAsync("order_pub_sub", "orders", order); +Console.WriteLine("Published data: " + order); ``` ### Step 3: Subscribe to topics @@ -543,23 +530,12 @@ dapr run --app-id checkout --components-path ../../../components -- java -jar ta In the `checkout` publisher, we're publishing the orderId message to the Redis instance called `order_pub_sub` [(as defined in the `pubsub.yaml` component)]({{< ref "#pubsubyaml-component-file" >}}) and topic `orders`. As soon as the service starts, it publishes in a loop: ```java -public static void main(String[] args) throws InterruptedException{ - String TOPIC_NAME = "orders"; - String PUBSUB_NAME = "order_pub_sub"; - -for (int i = 0; i <= 10; i++) { - int orderId = i; - Order order = new Order(orderId); - DaprClient client = new DaprClientBuilder().build(); - - // Publish an event/message using Dapr PubSub - client.publishEvent( - PUBSUB_NAME, - TOPIC_NAME, - order).block(); - logger.info("Published data: " + order.getOrderId()); - TimeUnit.MILLISECONDS.sleep(5000); -} +DaprClient client = new DaprClientBuilder().build(); +client.publishEvent( + PUBSUB_NAME, + TOPIC_NAME, + order).block(); +logger.info("Published data: " + order.getOrderId()); ``` ### Step 3: Subscribe to topics From ede573f0cb6745a8ff28f54394c3f8d9197954ed Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Fri, 18 Mar 2022 16:20:19 -0700 Subject: [PATCH 19/24] Fix quickstart links --- .../service-invocation/service-invocation-overview.md | 4 ++-- .../state-management/state-management-overview.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md b/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md index 06989b472..8b91ef023 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/service-invocation/service-invocation-overview.md @@ -95,7 +95,7 @@ Dapr allows users to keep their own proto services and work natively with gRPC. ## Example -Following the above call sequence, suppose you have the applications as described in the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/hello-world/README.md), where a python app invokes a node.js app. In such a scenario, the python app would be "Service A" , and a Node.js app would be "Service B". +Following the above call sequence, suppose you have the applications as described in the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/tutorials/hello-world/README.md), where a python app invokes a node.js app. In such a scenario, the python app would be "Service A" , and a Node.js app would be "Service B". The diagram below shows sequence 1-7 again on a local machine showing the API calls: @@ -115,6 +115,6 @@ The diagram below shows sequence 1-7 again on a local machine showing the API ca - [How-to: Invoke services using HTTP]({{< ref howto-invoke-discover-services.md >}}) - [How-To: Configure Dapr to use gRPC]({{< ref grpc >}}) - [How-to: Invoke services using gRPC]({{< ref howto-invoke-services-grpc.md >}}) -- Try out the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/hello-world/README.md) which shows how to use HTTP service invocation or try the samples in the [Dapr SDKs]({{< ref sdks >}}) +- Try out the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/tutorials/hello-world/README.md) which shows how to use HTTP service invocation or try the samples in the [Dapr SDKs]({{< ref sdks >}}) - Read the [service invocation API specification]({{< ref service_invocation_api.md >}}) - Understand the [service invocation performance]({{< ref perf-service-invocation.md >}}) numbers diff --git a/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md b/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md index 29c8cc1a8..e5aa503f9 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/state-management/state-management-overview.md @@ -117,7 +117,7 @@ The state management API can be found in the [state management API reference]({{ * [How-To: Query state]({{< ref howto-state-query-api.md >}}) * [How-To: Encrypt application state]({{< ref howto-encrypt-state.md >}}) * [State Time-to-Live]({{< ref state-store-ttl.md >}}) -* Try out the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/hello-world/README.md) which shows how to use state management or try the samples in the [Dapr SDKs]({{< ref sdks >}}) +* Try out the [hello world quickstart](https://github.com/dapr/quickstarts/blob/master/tutorials/hello-world/README.md) which shows how to use state management or try the samples in the [Dapr SDKs]({{< ref sdks >}}) * List of [state store components]({{< ref supported-state-stores.md >}}) * Read the [state management API reference]({{< ref state_api.md >}}) * Read the [actors API reference]({{< ref actors_api.md >}}) From b85c6691dce9cd7ae8d0c175c5bc742b142f2cd4 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Fri, 18 Mar 2022 16:26:01 -0700 Subject: [PATCH 20/24] Fix pubusb quickstart links Signed-off-by: Nick Greenfield --- .../building-blocks/pubsub/howto-publish-subscribe.md | 2 +- .../building-blocks/pubsub/pubsub-overview.md | 2 +- .../content/en/operations/components/setup-pubsub/_index.md | 2 +- .../operations/components/setup-pubsub/pubsub-namespaces.md | 4 ++-- daprdocs/content/en/reference/api/pubsub_api.md | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md b/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md index 5ace3cdb7..6c6295df5 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md +++ b/daprdocs/content/en/developing-applications/building-blocks/pubsub/howto-publish-subscribe.md @@ -698,7 +698,7 @@ Invoke-RestMethod -Method Post -ContentType 'application/cloudevents+json' -Body ## Next steps -- Try the [Pub/Sub quickstart sample](https://github.com/dapr/quickstarts/tree/master/pub-sub) +- Try the [Pub/Sub quickstart sample](https://github.com/dapr/quickstarts/tree/master/pub_sub) - Learn about [PubSub routing]({{< ref howto-route-messages >}}) - Learn about [topic scoping]({{< ref pubsub-scopes.md >}}) - Learn about [message time-to-live]({{< ref pubsub-message-ttl.md >}}) diff --git a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md index c011fdfd0..3cb0ccc9f 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/pubsub/pubsub-overview.md @@ -112,7 +112,7 @@ The publish/subscribe API is located in the [API reference]({{< ref pubsub_api.m * Follow these guides on: * [How-To: Publish a message and subscribe to a topic]({{< ref howto-publish-subscribe.md >}}) * [How-To: Configure Pub/Sub components with multiple namespaces]({{< ref pubsub-namespaces.md >}}) -* Try out the [Pub/Sub quickstart sample](https://github.com/dapr/quickstarts/tree/master/pub-sub) +* Try out the [Pub/Sub quickstart sample](https://github.com/dapr/quickstarts/tree/master/pub_sub) * Learn about [topic scoping]({{< ref pubsub-scopes.md >}}) * Learn about [message time-to-live (TTL)]({{< ref pubsub-message-ttl.md >}}) * Learn about [pubsub without CloudEvent]({{< ref pubsub-raw.md >}}) diff --git a/daprdocs/content/en/operations/components/setup-pubsub/_index.md b/daprdocs/content/en/operations/components/setup-pubsub/_index.md index dbb53fd6b..74afed4b3 100644 --- a/daprdocs/content/en/operations/components/setup-pubsub/_index.md +++ b/daprdocs/content/en/operations/components/setup-pubsub/_index.md @@ -47,7 +47,7 @@ Visit [this guide]({{< ref "howto-publish-subscribe.md#step-3-publish-a-topic" > ## Related links - Overview of the Dapr [Pub/Sub building block]({{< ref pubsub-overview.md >}}) -- Try the [Pub/Sub quickstart sample](https://github.com/dapr/quickstarts/tree/master/pub-sub) +- Try the [Pub/Sub quickstart sample](https://github.com/dapr/quickstarts/tree/master/pub_sub) - Read the [guide on publishing and subscribing]({{< ref howto-publish-subscribe.md >}}) - Learn about [topic scoping]({{< ref pubsub-scopes.md >}}) - Learn about [message time-to-live]({{< ref pubsub-message-ttl.md >}}) diff --git a/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md b/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md index 8b3aae53a..8d2f61a2a 100644 --- a/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md +++ b/daprdocs/content/en/operations/components/setup-pubsub/pubsub-namespaces.md @@ -12,7 +12,7 @@ In some scenarios, applications can be spread across namespaces and share a queu Namespaces are a Dapr concept used for scoping applications and components. This example uses Kubernetes namespaces, however the Dapr component namespace scoping can be used on any supported platform. Read [How-To: Scope components to one or more applications]({{< ref "component-scopes.md" >}}) for more information on scoping components. {{% /alert %}} -This example uses the [PubSub sample](https://github.com/dapr/quickstarts/tree/master/pub-sub). The Redis installation and the subscribers are in `namespace-a` while the publisher UI is in `namespace-b`. This solution will also work if Redis is installed on another namespace or if you use a managed cloud service like Azure ServiceBus, AWS SNS/SQS or GCP PubSub. +This example uses the [PubSub sample](https://github.com/dapr/quickstarts/tree/master/pub_sub). The Redis installation and the subscribers are in `namespace-a` while the publisher UI is in `namespace-b`. This solution will also work if Redis is installed on another namespace or if you use a managed cloud service like Azure ServiceBus, AWS SNS/SQS or GCP PubSub. This is a diagram of the example using namespaces. @@ -33,7 +33,7 @@ The table below shows which resources are deployed to which namespaces: ## Pre-requisites * [Dapr installed on Kubernetes]({{< ref "kubernetes-deploy.md" >}}) in any namespace since Dapr works at the cluster level. -* Checkout and cd into the directory for [PubSub quickstart](https://github.com/dapr/quickstarts/tree/master/pub-sub). +* Checkout and cd into the directory for [PubSub quickstart](https://github.com/dapr/quickstarts/tree/master/pub_sub). ## Setup `namespace-a` diff --git a/daprdocs/content/en/reference/api/pubsub_api.md b/daprdocs/content/en/reference/api/pubsub_api.md index c88448050..c751d9c21 100644 --- a/daprdocs/content/en/reference/api/pubsub_api.md +++ b/daprdocs/content/en/reference/api/pubsub_api.md @@ -168,4 +168,4 @@ Dapr Pub/Sub adheres to version 1.0 of CloudEvents. ## Related links * [How to publish to and consume topics]({{< ref howto-publish-subscribe.md >}}) -* [Sample for pub/sub](https://github.com/dapr/quickstarts/tree/master/pub-sub) +* [Sample for pub/sub](https://github.com/dapr/quickstarts/tree/master/pu_sub) From f59185f0a047891664622d2f752d209415bbdef7 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Fri, 18 Mar 2022 16:29:15 -0700 Subject: [PATCH 21/24] Fix observability tutorial links Signed-off-by: Nick Greenfield --- .../observability/w3c-tracing/w3c-tracing-howto.md | 2 +- .../observability/w3c-tracing/w3c-tracing-overview.md | 2 +- .../monitoring/tracing/open-telemetry-collector-appinsights.md | 2 +- .../operations/monitoring/tracing/open-telemetry-collector.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-howto.md b/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-howto.md index 145b9cd59..04ad0a4fd 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-howto.md +++ b/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-howto.md @@ -294,4 +294,4 @@ You can now correlate the calls in your app and across services with Dapr using - [How To set up Application Insights for distributed tracing with OpenTelemetry]({{< ref open-telemetry-collector.md >}}) - [How to set up Zipkin for distributed tracing]({{< ref zipkin.md >}}) - [W3C trace context specification](https://www.w3.org/TR/trace-context/) -- [Observability quickstart](https://github.com/dapr/quickstarts/tree/master/observability) +- [Observability quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/observability) diff --git a/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-overview.md b/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-overview.md index 48a44254b..15d1d7b6b 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/observability/w3c-tracing/w3c-tracing-overview.md @@ -108,4 +108,4 @@ In the gRPC API calls, trace context is passed through `grpc-trace-bin` header. - [How To set up Application Insights for distributed tracing with OpenTelemetry]({{< ref open-telemetry-collector.md >}}) - [How To set up Zipkin for distributed tracing]({{< ref zipkin.md >}}) - [W3C trace context specification](https://www.w3.org/TR/trace-context/) -- [Observability sample](https://github.com/dapr/quickstarts/tree/master/observability) +- [Observability sample](https://github.com/dapr/quickstarts/tree/master/tutorials/observability) diff --git a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md index bab5568af..a03a16b8a 100644 --- a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md +++ b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector-appinsights.md @@ -68,5 +68,5 @@ Deploy and run some applications. After a few minutes, you should see tracing lo > **NOTE**: Only operations going through Dapr API exposed by Dapr sidecar (e.g. service invocation or event publishing) are displayed in Application Map topology. ## Related links -* Try out the [observability quickstart](https://github.com/dapr/quickstarts/tree/master/observability/README.md) +* Try out the [observability quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/observability/README.md) * How to set [tracing configuration options]({{< ref "configuration-overview.md#tracing" >}}) diff --git a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md index e3bc96f05..b1fbf724d 100644 --- a/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md +++ b/daprdocs/content/en/operations/monitoring/tracing/open-telemetry-collector.md @@ -66,6 +66,6 @@ That's it! There's no need include any SDKs or instrument your application code. Deploy and run some applications. Wait for the trace to propagate to your tracing backend and view them there. ## Related links -* Try out the [observability quickstart](https://github.com/dapr/quickstarts/tree/master/observability/README.md) +* Try out the [observability quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/observability/README.md) * How to set [tracing configuration options]({{< ref "configuration-overview.md#tracing" >}}) From bc69f26c6441f4beaca10edc135f518ed7698474 Mon Sep 17 00:00:00 2001 From: Nick Greenfield Date: Fri, 18 Mar 2022 16:44:03 -0700 Subject: [PATCH 22/24] Fix quickstart links path --- .../building-blocks/bindings/bindings-overview.md | 2 +- .../building-blocks/bindings/howto-bindings.md | 2 +- .../building-blocks/secrets/howto-secrets.md | 2 +- .../debugging/bridge-to-kubernetes.md | 2 +- .../debugging/debug-k8s/debug-dapr-services.md | 2 +- .../debugging/debug-k8s/debug-daprd.md | 6 +++--- .../ides/vscode/vscode-how-to-debug-multiple-dapr-apps.md | 4 ++-- .../content/en/operations/configuration/invoke-allowlist.md | 4 ++-- .../en/operations/hosting/kubernetes/kubernetes-overview.md | 4 ++-- .../tracing/open-telemetry-collector-appinsights.md | 2 +- .../monitoring/tracing/open-telemetry-collector.md | 2 +- daprdocs/content/en/reference/api/pubsub_api.md | 2 +- 12 files changed, 17 insertions(+), 17 deletions(-) diff --git a/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md b/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md index 835b9d723..d82d3d2aa 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md +++ b/daprdocs/content/en/developing-applications/building-blocks/bindings/bindings-overview.md @@ -50,5 +50,5 @@ Read the [Use output bindings to interface with external resources]({{< ref howt * Follow these guides on: * [How-To: Trigger a service from different resources with input bindings]({{< ref howto-triggers.md >}}) * [How-To: Use output bindings to interface with external resources]({{< ref howto-bindings.md >}}) -* Try out the [bindings quickstart](https://github.com/dapr/quickstarts/tree/master/bindings/README.md) which shows how to bind to a Kafka queue +* Try out the [bindings quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/bindings/README.md) which shows how to bind to a Kafka queue * Read the [bindings API specification]({{< ref bindings_api.md >}}) diff --git a/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md b/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md index ce9c1d87a..bf3048800 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md +++ b/daprdocs/content/en/developing-applications/building-blocks/bindings/howto-bindings.md @@ -7,7 +7,7 @@ weight: 300 --- Output bindings enable you to invoke external resources without taking dependencies on special SDK or libraries. -For a complete sample showing output bindings, visit this [link](https://github.com/dapr/quickstarts/tree/master/bindings). +For a complete sample showing output bindings, visit this [link](https://github.com/dapr/quickstarts/tree/master/tutorials/bindings). ## Example: diff --git a/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md b/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md index 4ac50cf55..015553e26 100644 --- a/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md +++ b/daprdocs/content/en/developing-applications/building-blocks/secrets/howto-secrets.md @@ -270,4 +270,4 @@ main(); - [Configure a secret store]({{}}) - [Supported secrets]({{}}) - [Using secrets in components]({{}}) -- [Secret stores quickstart](https://github.com/dapr/quickstarts/tree/master/secretstore) +- [Secret stores quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/secretstore) diff --git a/daprdocs/content/en/developing-applications/debugging/bridge-to-kubernetes.md b/daprdocs/content/en/developing-applications/debugging/bridge-to-kubernetes.md index fcecb016b..4f7bdc0a1 100644 --- a/daprdocs/content/en/developing-applications/debugging/bridge-to-kubernetes.md +++ b/daprdocs/content/en/developing-applications/debugging/bridge-to-kubernetes.md @@ -12,7 +12,7 @@ Bridge to Kubernetes allows you to run and debug code on your development comput ## Debug Dapr apps -Bridge to Kubernetes supports debugging Dapr apps on your machine, while still having them interact with the services and applications running on your Kubernetes cluster. This example showcases Bridge to Kubernetes enabling a developer to debug the [distributed calculator quickstart](https://github.com/dapr/quickstarts/tree/master/distributed-calculator): +Bridge to Kubernetes supports debugging Dapr apps on your machine, while still having them interact with the services and applications running on your Kubernetes cluster. This example showcases Bridge to Kubernetes enabling a developer to debug the [distributed calculator quickstart](https://github.com/dapr/quickstarts/tree/master/tutorials/distributed-calculator):