AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client
1.4.15
dotnet add package AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client --version 1.4.15
NuGet\Install-Package AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client -Version 1.4.15
<PackageReference Include="AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client" Version="1.4.15" />
<PackageVersion Include="AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client" Version="1.4.15" />
<PackageReference Include="AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client" />
paket add AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client --version 1.4.15
#r "nuget: AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client, 1.4.15"
#:package AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client@1.4.15
#addin nuget:?package=AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client&version=1.4.15
#tool nuget:?package=AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client&version=1.4.15
AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client
Client SDK for the Flowflake ID gRPC service. It implements IFlowflakeId, handles failover across multiple addresses, caches GetServerInfo, and decodes timestamps/instance locally.
Install
dotnet add package AmasiaLabs.Toolkit.FlowflakeId.Grpc.Client
Configuration
Default section path: Amasia:Toolkit:FlowflakeId:Grpc:Client.
{
"Amasia": {
"Toolkit": {
"FlowflakeId": {
"Grpc": {
"Client": {
"Addresses": [ "http://localhost:8080" ],
"DeadlineMs": 200,
"MaxAttempts": 2
}
}
}
}
}
}
Usage
var builder = WebApplication.CreateBuilder(args);
// Register gRPC client for IFlowflakeId
builder.Services.AddFlowflakeIdGrpcClient(builder.Configuration);
var app = builder.Build();
var ids = app.Services.GetRequiredService<IFlowflakeId>();
var id = await ids.GenerateAsync();
var batch = await ids.GenerateBatchAsync(10);
app.Run();
Note: Do not register both the local generator (AddFlowflakeId) and the gRPC client at the same time for the same IFlowflakeId.
DateTime extraction and component parsing use extension methods from AmasiaLabs.Toolkit.FlowflakeId.Extensions. The gRPC client caches ServerInfo (epoch/layout) from the server - call any async method (e.g., GenerateAsync) once to initialize before using decode extensions. For text formatting/parsing, use the extensions from FlowflakeId.Extensions package.
Backlog
- Segment/batch leases RPC to minimize per-ID RPCs and allow local consumption.
- Hedging/retries via gRPC ServiceConfig; optional static resolver with round-robin.
- mTLS and cert pinning options.
- ServerInfo TTL and background refresh with jitter.
- Optional async interface for non-blocking RPC calls.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AmasiaLabs.Toolkit.FlowflakeId.Abstractions (>= 1.4.15)
- Google.Protobuf (>= 3.34.1)
- Grpc.Net.Client (>= 2.76.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.7)
- Microsoft.Extensions.Options.DataAnnotations (>= 10.0.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.