Caution
The samples and tutorials provided in this repository are for demonstration purposed only, and should not be deployed to a production system or included within an application without a full understanding of how they operate.
Additionally some samples may use a username and password for authentication. This is used for sample simplicity and a production system should use a robust authentication mechanism such as certificates.
The following is a list of tutorials and samples that are available across all languages. Each language may have additional samples which can also be found within each language directory.
Tip
Refer to the setup documentation for setting up your development environment prior to running the samples and tutorials.
A 🟡 mean the tutorial or sample is planned.
The tutorials listed below are step-by-step instructions to deploy a fully functioning application to a cluster and observer the functioning output.
| Tutorial | Description | Go | .NET | Rust |
|---|---|---|---|---|
| Event Driven Application | Read from a topic and perform a sliding window calculation, utilizing the State Store to cache historical data. The result is written to a second topic. | 🟡 | .NET | Rust |
| Category | Sample | Description | Go | .NET | Rust |
|---|---|---|---|---|---|
| MQTT | Session client | Connect to the MQTT broker | 🟡 | .NET | Rust |
| Session client - SAT auth | Connect to the MQTT broker with SAT | 🟡 | 🟡 | Rust | |
| Session client - x509 auth | Connect to the MQTT broker with x509 | 🟡 | 🟡 | 🟡 | |
| Protocol | Telemetry client | Send and receive messages to a MQTT topic | 🟡 | 🟡 | Sender Receiver |
| Telemetry client with Cloud Events | Send and receive messages to a MQTT topic with cloud events | Go | 🟡 | Sender Receiver |
|
| Command client | Invoke and execute and command using the MQTT RPC protocol | 🟡 | 🟡 | Invoker Executor |
|
| Services | State store client | Get, set and delete a key | Go | .NET | Rust |
| State store client - observe key | Observe a key and receive a notification | 🟡 | .NET | Rust | |
| Leased lock client | Lock a key in the state store shared between applications | Go | .NET | 🟡 | |
| Leader election client | Leader assignment for highly available applications | 🟡 | .NET | 🟡 | |
| Schema registry client | Get and set schemas from the registry | Go | .NET | Rust | |
| Akri client | Notify Akri services of discovered assets | 🟡 | 🟡 | 🟡 | |
| Codegen | Telemetry & command | A basic telemetry and command | 🟡 | 🟡 | 🟡 |
| Telemetry + primitive schema | Telemetry using primitive types such as integers, bool and float | 🟡 | 🟡 | 🟡 | |
| Telemetry + complex schema | Telemetry using complex types such as maps and objects | 🟡 | 🟡 | 🟡 | |
| Command variants | Commands using idempotent and cacheable | 🟡 | 🟡 | 🟡 |
Refer to each language directory below for additional samples.
.NET SDK:
Go SDK:
Rust SDK: