Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.0 - 2025-08-15
Added
- Initial release of
ex_esdb_grpcas a separate gRPC API package - EventStore-compatible gRPC API server
ExESDBGrpc.Server- gRPC server GenServer with lifecycle managementExESDBGrpc.Endpoint- gRPC endpoint for service registrationExESDBGrpc.EventStoreService- Complete EventStore gRPC service implementationExESDBGrpc.Application- Application supervisor with configurable startup- Protocol buffer definitions for EventStore API compatibility
- Real-time event streaming with
SubscribeToStreamRPC - Stream operations: read, write, delete, and metadata retrieval
- Health check endpoint for service monitoring
- Transaction support framework (basic implementation)
Features
- EventStore Compatibility: Works with existing EventStore gRPC clients
- Stream Operations: Complete CRUD operations for event streams
- Live Subscriptions: Real-time event streaming via gRPC
- Health Monitoring: Built-in health check service
- Configurable Server: Port and IP configuration support
- Error Handling: Comprehensive error responses and logging
- JSON Serialization: Automatic JSON encoding/decoding for event data
- Subscription Management: Automatic cleanup and timeout handling
gRPC Services
EventStore Service
WriteEvents- Write events to a stream with optimistic concurrencyReadEvent- Read a single event by stream and event numberReadStreamEvents- Read multiple events from a stream with paginationReadAllEvents- Read from the global event stream (placeholder)SubscribeToStream- Subscribe to stream events with real-time updatesDeleteStream- Delete a stream (soft delete)GetStreamInfo- Retrieve stream metadata and statisticsHealthCheck- Service health monitoring
Transaction Support (Basic)
StartTransaction- Begin a new transactionWriteToTransaction- Write events to an open transactionCommitTransaction- Commit a transaction atomically
Dependencies
- ExESDBGater (~> 0.5.0) for core event store functionality
- gRPC (~> 0.7) for gRPC server implementation
- Protobuf (~> 0.15) for protocol buffer support
- Jason (~> 1.0) for JSON encoding/decoding
Technical Notes
- Extracted from
reckon_adminsystem as a standalone package - Clean integration with ExESDBGater API layer
- Supports both secure and development modes
- Automatic subscription cleanup and resource management
- Compatible with EventStore client libraries
Configuration Options
config :ex_esdb_grpc,
enabled: true, # Enable/disable gRPC server
port: 50051 # gRPC server portUsage Examples
# Add to supervision tree
{ExESDBGrpc.Server, [port: 50051]}
# Check server status
ExESDBGrpc.server_running?()
ExESDBGrpc.server_info()