Skip to content

Latest commit

Β 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

AeroStream Client SDKs (aerostream-sdk)

License Status Protocol

Official production-grade client SDKs for AeroStream's ultra-low-latency native binary protocol (0xAE 0x01 on TCP port 9091).


πŸ“¦ Supported Languages & Packages

Language Directory / Package Module / Package Identifier Status
🦫 Golang go/ github.com/gradientgeeks/aerostream-sdk/go βœ… v0.1.0-preview
πŸ¦€ Rust rust/ aerostream-client βœ… v0.1.0-preview
β˜• Java java/ org.gradientgeeks.aerostream:aerostream-client βœ… v0.1.0-preview
πŸ”· .NET (C#) dotnet/ GradientGeeks.AeroStream.Client βœ… v0.1.0-preview
🟩 Node.js nodejs/ @gradientgeeks/aerostream-client βœ… v0.1.0-preview

⚑ Native Protocol vs Kafka Protocol (Port 9091 vs 9092)

  • Port 9092 (Kafka Wire Protocol): Drop-in replacement for standard Kafka SDKs (kafka-clients, confluent-kafka, kafkajs, franz-go).
  • Port 9091 (AeroStream Native Protocol): 7-byte ultra-lightweight header, direct memory layout, zero Kafka envelope overhead, sub-millisecond tail latency.

Protocol Framing (0xAE 0x01)

+─────────────────────+──────────────+──────────────────────+──────────────────────────+
| Magic Bytes (2B)    | Command (1B) | Body Length (4B BE)  | Variable Payload (N B)   |
| 0xAE 0x01           | uint8 (0..4) | uint32               | Command-Specific Bytes   |
+─────────────────────+──────────────+──────────────────────+──────────────────────────+
  • Command 0: Authentication Handshake (Bearer token)
  • Command 1: High-Speed Produce / Append (assigned 64-bit log offset)
  • Command 2: Consumer Fetch (bounded by partition High Watermark)
  • Command 4: Multi-Entry Long-Polling Fetch (multi-record batches with server-side suspension)

πŸš€ Quickstarts

Golang

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/gradientgeeks/aerostream-sdk/go/client"
)

func main() {
	c, err := client.NewClient("127.0.0.1:9091", client.WithAuthToken("secret-token"))
	if err != nil {
		log.Fatal(err)
	}
	defer c.Close()

	producer := c.NewProducer()
	offset, err := producer.Produce(context.Background(), "telemetry", 0, []byte("sensor-payload"))
	fmt.Printf("Produced record at offset %d\n", offset)
}

Rust

use aerostream_client::{AeroClient, ClientConfig};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = AeroClient::connect(
        ClientConfig::new("127.0.0.1:9091")
            .with_auth_token("secret-token")
    ).await?;

    let producer = client.producer();
    let offset = producer.send("telemetry", 0, b"sensor-payload").await?;
    println!("Produced record at offset {offset}");

    Ok(())
}

Java

import org.gradientgeeks.aerostream.client.AeroClient;
import org.gradientgeeks.aerostream.client.AeroProducer;
import java.nio.charset.StandardCharsets;

public class Main {
    public static void main(String[] args) {
        try (AeroClient client = AeroClient.connect("127.0.0.1:9091", "secret-token");
             AeroProducer producer = client.producer()) {
            long offset = producer.send("telemetry", 0, "sensor-payload".getBytes(StandardCharsets.UTF_8));
            System.out.printf("Produced record at offset %d%n", offset);
        }
    }
}

.NET (C#)

using System.Text;
using GradientGeeks.AeroStream.Client;

await using var client = await AeroClient.ConnectAsync(new AeroClientOptions {
    BootstrapServers = ["127.0.0.1:9091"],
    AuthToken = "secret-token"
});

var producer = client.CreateProducer();
long offset = await producer.SendAsync("telemetry", 0, Encoding.UTF_8.GetBytes("sensor-payload"));
Console.WriteLine($"Produced record at offset {offset}");

Node.js / TypeScript

import { AeroClient } from '@gradientgeeks/aerostream-client';

const client = await AeroClient.connect('127.0.0.1:9091', 'secret-token');
const producer = client.producer();

const offset = await producer.send('telemetry', 0, 'sensor-payload');
console.log(`Produced record at offset ${offset}`);

await client.close();

πŸ“„ License

Licensed under Apache License, Version 2.0 (LICENSE).

About

Official client SDKs for AeroStream (Go, Rust, Java, .NET, Node.js)

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages