mirror of https://github.com/dapr/quickstarts.git
				
				
				
			new structure of README
This commit is contained in:
		
							parent
							
								
									9f27d8262c
								
							
						
					
					
						commit
						406a86769e
					
				|  | @ -1,9 +1,105 @@ | ||||||
| # Dapr Actors (Dapr SDK) **In Development | # Dapr Actors (Dapr SDK) **In Development | ||||||
| 
 | 
 | ||||||
| In this quickstart, you'll create an Actor service to demonstrate Dapr's Actors API to work stateful objects. The service represents the digital twin for a smart device, a "smart smoke detector", that has state including alarm status, battery, and firmware version.  Multiple Actors can have interactions like signaling an alarm to the others.  There is also a Controller actor that can query for all status, battery, and perform calculations like % of devices with low battery.   | In this quickstart, you'll create an Actor service to demonstrate Dapr's Actors API to work stateful objects. The service represents the digital twin for a smart device, a "smart smoke detector", that has state including a location and a status. Multiple Actors can have interactions like signaling an alarm to the others. There is also a Controller actor that can reset the status for all devices. | ||||||
| 
 | 
 | ||||||
| Visit [this](https://docs.dapr.io/developing-applications/building-blocks/actors/actors-overview/) link for more information about Dapr and Actors. | Visit [this](https://docs.dapr.io/developing-applications/building-blocks/actors/actors-overview/) link for more information about Dapr and Actors. | ||||||
| 
 | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | //TODO in general in this README: | ||||||
|  | 
 | ||||||
|  | 1. Refer to .NET source code for more details on the implementation. | ||||||
|  | 2. Change HTTP calls to use cURL | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ## Objective 1: Activate SmartDetectorActors via HTTP | ||||||
|  | 
 | ||||||
|  | Dapr actors are so-called virtual actors. As soon as you call an actor method, the actor is activated and the method is executed. The actor is deactivated after a configurable period of time (idle timeout). Any state that belongs to the actor is persisted in a state store. So if you call the same actor after the idle timeout, the actor is reactivated and the state is restored. | ||||||
|  | 
 | ||||||
|  | 1. Run the `SmartDeviceService`, which will start the Dapr sidecar and the service itself: | ||||||
|  | 
 | ||||||
|  |   ```bash | ||||||
|  |   cd ./smartdevice.Service | ||||||
|  | 
 | ||||||
|  |   dapr run --app-id myapp --app-port 5001 --dapr-http-port 3500 --components-path ../../../resources -- dotnet run --urls=http://localhost:5001/ | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  | 2. Create a `SmartDetectorActor` with actorId `1` and set the location to `First Floor`, and status to `Ready`: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   POST http://localhost:<daprPort>/v1.0/actors/SmartDetectorActor/1/method/init | ||||||
|  |   Content-Type: application/json | ||||||
|  | 
 | ||||||
|  |   { | ||||||
|  |     "location": "First Floor", | ||||||
|  |     "status": "Ready", | ||||||
|  |   } | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  | 3. Read the `status` field of the `SmartDetectorActor` with actorId `1`: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   GET http://localhost:<daprPort>/v1.0/actors/SmartDetectorActor/1/state/status | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  |   The response should be: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   { | ||||||
|  |     "status": "Ready" | ||||||
|  |   } | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  | 4. Create another `SmartDetectorActor`, now with actorId `2`, location `Second Floor,` and status  `Ready`: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   POST http://localhost:<daprPort>/v1.0/actors/SmartDetectorActor/2/state | ||||||
|  |   Content-Type: application/json | ||||||
|  | 
 | ||||||
|  |   { | ||||||
|  |     "location": "Second Floor", | ||||||
|  |     "status": "Ready", | ||||||
|  |   } | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  | ## Objective 2: Call a SmartDetectorActor method that triggers another Actor method | ||||||
|  | 
 | ||||||
|  | When a `SmartDetectorActor` detects a fire, the other `SmartDetectorActor` should be signaled so they both sound the alarm. The `ControllerActor` is aware of all `SmartDetectorActor`s and can signal them all. When `SmartDetectorActor` 1 detects a fire, it calls the `SignalAlarm` method on the `ControllerActor` which in turn calls the `SignalAlarm` method `SmartDetectorActor` 2. | ||||||
|  | 
 | ||||||
|  | 1. Ensure that the `SmartDeviceService` and Dapr sidecar are still running. | ||||||
|  | 2. Make a request to `SmartDetectorActor` with actorId `1` and call the `SignalAlarm` method: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   POST http://localhost:<daprPort>/v1.0/actors/SmartDetectorActor/1/method/signalAlarm | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  |   The log output of the `SmartDeviceService` should show that the `SignalAlarm` method was called on `SmartDetectorActor` 1 and 2: | ||||||
|  | 
 | ||||||
|  |   //TODO | ||||||
|  | 
 | ||||||
|  | 3. You can also read the `status` field of the `SmartDetectorActor`s: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   GET http://localhost:<daprPort>/v1.0/actors/SmartDetectorActor/1/state/status | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  |   The response should be: | ||||||
|  | 
 | ||||||
|  |   ``` | ||||||
|  |   { | ||||||
|  |     "status": "Alarm" | ||||||
|  |   } | ||||||
|  |   ``` | ||||||
|  | 
 | ||||||
|  | ## Objective 3: Use the ControllerActor to reset the status of all SmartDetectorActors | ||||||
|  | 
 | ||||||
|  | In case of a false alarm, the `ControllerActor` can reset the status of all `SmartDetectorActor`s to `Ready`. | ||||||
|  | 
 | ||||||
|  | // TODO | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
| > **Note:** This example leverages the Dapr SDK.   | > **Note:** This example leverages the Dapr SDK.   | ||||||
| 
 | 
 | ||||||
| This quickstart includes three services and some common interfaces: | This quickstart includes three services and some common interfaces: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue