Expand description
§MockForge Kafka
Kafka protocol support for MockForge.
This crate provides Kafka-specific functionality for creating mock Kafka brokers, including topic management, partition handling, consumer groups, and fixture-driven message generation.
§Overview
MockForge Kafka enables you to:
- Mock Kafka brokers: Simulate Apache Kafka brokers for testing
- Topic and partition management: Create and manage topics with configurable partitions
- Producer/consumer simulation: Handle produce and fetch requests
- Consumer group coordination: Simulate consumer group behavior and rebalancing
- Fixture-based messaging: Generate messages using templates and patterns
- Auto-produce functionality: Automatically generate messages at specified rates
§Quick Start
§Basic Kafka Broker
use mockforge_kafka::KafkaMockBroker;
use mockforge_core::config::KafkaConfig;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = KafkaConfig::default();
let broker = KafkaMockBroker::new(config).await?;
broker.start().await?;
Ok(())
}§Key Features
§Broker Simulation
- 10+ Kafka APIs supported: Produce, Fetch, Metadata, ListGroups, DescribeGroups, ApiVersions, CreateTopics, DeleteTopics, DescribeConfigs
- Protocol-compliant responses: Full Kafka protocol implementation without external dependencies
- Connection handling: TCP-based broker connections with proper error handling
- Topic and partition management: Dynamic topic/partition creation and management
§Metrics and Monitoring
- Comprehensive metrics: Request counts, error rates, connection tracking
- Prometheus integration: Export metrics in Prometheus format
- Real-time monitoring: Live metrics collection during broker operation
§Fixture System
- YAML-based fixtures: Define message templates and auto-production rules
- Template engine integration: Use MockForge’s templating system for dynamic content
- Auto-produce functionality: Automatically generate messages at specified rates
- Key and value templating: Flexible message generation with context variables
§Consumer Group Management
- Group coordination: Simulate consumer group joins and synchronization
- Partition assignment: Automatic partition distribution among consumers
- Offset management: Track and manage consumer offsets
- Rebalancing simulation: Test consumer group rebalancing scenarios
§Testing Features
- Protocol validation: Ensure requests conform to Kafka protocol specifications
- Error simulation: Configurable error responses for testing error handling
- Performance testing: Built-in benchmarking support
- Integration testing: Compatible with standard Kafka client libraries
§Supported Kafka APIs
- Produce (API Key 0): Message production with acknowledgments
- Fetch (API Key 1): Message consumption with offset management
- Metadata (API Key 3): Topic and broker metadata discovery
- ListGroups (API Key 9): Consumer group listing
- DescribeGroups (API Key 15): Consumer group details and member information
- ApiVersions (API Key 18): Protocol version negotiation
- CreateTopics (API Key 19): Dynamic topic creation
- DeleteTopics (API Key 20): Topic deletion
- DescribeConfigs (API Key 32): Configuration retrieval
§Example Usage
§Basic Broker Setup
use mockforge_kafka::KafkaMockBroker;
use mockforge_core::config::KafkaConfig;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = KafkaConfig {
port: 9092,
..Default::default()
};
let broker = KafkaMockBroker::new(config).await?;
broker.start().await?;
Ok(())
}§Metrics Export
use mockforge_kafka::MetricsExporter;
use mockforge_kafka::KafkaMetrics;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let metrics = Arc::new(KafkaMetrics::default());
let exporter = MetricsExporter::new(metrics.clone());
// Export metrics in Prometheus format
let snapshot = exporter.export_prometheus();
println!("{}", snapshot);
Ok(())
}§Related Crates
mockforge-core: Core mocking functionality and configurationrdkafka: Kafka client library for testing integration
Re-exports§
pub use broker::KafkaMockBroker;pub use consumer_groups::ConsumerGroup;pub use consumer_groups::ConsumerGroupManager;pub use fixtures::AutoProduceConfig;pub use fixtures::KafkaFixture;pub use metrics::KafkaMetrics;pub use metrics::MetricsExporter;pub use metrics::MetricsSnapshot;pub use partitions::KafkaMessage;pub use partitions::Partition;pub use spec_registry::KafkaSpecRegistry;pub use topics::Topic;pub use topics::TopicConfig;
Modules§
- broker
- consumer_
groups - fixtures
- metrics
- Metrics and monitoring for Kafka broker operations
- partitions
- protocol
- Kafka protocol handling
- spec_
registry - topics