blob: ea7d6c0b145f66a622d312461714dd3253279dfc [file] [log] [blame] [view]
# Iggy Examples
This directory contains comprehensive sample applications that showcase various usage patterns of the Iggy client SDK. To learn more about building applications with Iggy, please refer to the [getting started](https://iggy.apache.org/docs/introduction/getting-started) guide.
## Running Examples
To run any example, first start the server with `cargo run --bin iggy-server` and then run the desired example.
For server configuration options and help:
```bash
cargo run --bin iggy-server -- --help
```
You can also customize the server using environment variables:
```bash
## Example: Enable HTTP transport and set custom address
IGGY_HTTP_ENABLED=true IGGY_TCP_ADDRESS=0.0.0.0:8090 cargo run --bin iggy-server
```
## Basic Examples
### Getting Started
Perfect introduction for newcomers to Iggy:
```bash
dotnet run --project examples/csharp/src/GettingStarted/Iggy_SDK.Examples.GettingStarted.Producer
dotnet run --project examples/csharp/src/GettingStarted/Iggy_SDK.Examples.GettingStarted.Consumer
```
These examples use IIggyClient with TCP transport and demonstrate stream/topic creation with basic message handling.
### Basic Usage
Core functionality with detailed configuration options:
```bash
dotnet run --project examples/csharp/src/Basic/Iggy_SDK.Examples.Basic.Producer
dotnet run --project examples/csharp/src/Basic/Iggy_SDK.Examples.Basic.Consumer
```
Demonstrates fundamental client connection, authentication, batch message sending, and polling with support for TCP/QUIC/HTTP protocols.
## Message Pattern Examples
### Message Headers
Shows metadata management using custom headers:
```bash
dotnet run --project examples/csharp/src/MessageHeaders/Iggy_SDK.Examples.MessageHeaders.Producer
dotnet run --project examples/csharp/src/MessageHeaders/Iggy_SDK.Examples.MessageHeaders.Consumer
```
Demonstrates using HeaderKey/HeaderValue for message metadata instead of payload-based typing, with header-based message routing.
### Message Envelopes
JSON envelope pattern for polymorphic message handling:
```bash
dotnet run --project examples/csharp/src/MessageEnvelope/Iggy_SDK.Examples.MessageEnvelope.Producer
dotnet run --project examples/csharp/src/MessageEnvelope/Iggy_SDK.Examples.MessageEnvelope.Consumer
```
Uses MessagesGenerator to create OrderCreated, OrderConfirmed, and OrderRejected messages wrapped in JSON envelopes for type identification.
## Example Structure
All examples can be executed directly from the repository. Follow these steps:
1. **Start the Iggy server**: `cargo run --bin iggy-server`
2. **Run desired example**: `dotnet run --project examples/csharp/src/xxx`
3. **Check source code**
These examples use IggyClient with TCP transport and demonstrate automatic stream/topic creation with basic message handling.
The examples are automatically tested via `scripts/run-csharp-examples-from-readme.sh` to ensure they remain functional and up-to-date with the latest API changes.