# Event Driven Architecture

> Event-driven architecture, message queues, event sourcing, and CQRS

- Skill: `neuralblitz/event-driven-architecture` (Agent Skill)
- Install (CLI): `npx skillmds@latest add neuralblitz/event-driven-architecture`
- Raw SKILL.md: https://api.skillmd.com/api/skills/neuralblitz/event-driven-architecture/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: NeuralBlitz (https://skillmd.com/u/neuralblitz)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/neuralblitz/event-driven-architecture

---


## What I do
- Design event-driven systems
- Implement message queues and brokers
- Use event sourcing patterns
- Handle asynchronous messaging
- Build event processing pipelines
- Ensure event ordering and delivery

## When to use me
When building loosely coupled, scalable systems, microservices, or real-time processing applications.

## Core Concepts

### Event-Driven Architecture
- Producers emit events
- Consumers react to events
- Decoupled communication
- Temporal coupling eliminated

### Event Types
- **Domain Events**: Business meaningful
- **Integration Events**: Cross-service communication
- **Change Data Capture**: Database changes
- **System Events**: Infrastructure events

### Message Patterns

#### Point-to-Point
- One producer → One consumer
- Queue-based
- Guaranteed processing

#### Pub/Sub
- One producer → Multiple consumers
- Topic-based
- Event notification

## Message Brokers

### Apache Kafka
- Distributed event streaming
- High throughput
- Persistence
- Exactly-once semantics
- Use cases: Log aggregation, CDC, Event streaming

### RabbitMQ
- Traditional message broker
- Complex routing
- Multiple protocols (AMQP, MQTT, STOMP)
- Use cases: Task queues, RPC

### AWS SQS
- Managed queue service
- FIFO queues
- Dead letter queues
- Use cases: Microservices, Batch jobs

### NATS
- Lightweight
- Pub/sub, request/reply
- JetStream for persistence

## Event Sourcing

### Concept
- Store events, not state
- Rebuild state by replaying events
- Complete audit trail
- Time travel debugging

### Implementation
```csharp
// Command
public class PlaceOrderCommand {
    public Guid OrderId;
    public List<OrderItem> Items;
}

// Event
public class OrderPlacedEvent {
    public Guid OrderId;
    public List<OrderItem> Items;
    public DateTime PlacedAt;
}

// Aggregate
public class Order {
    private List<OrderPlacedEvent> _events = new();
    
    public void PlaceOrder(PlaceOrderCommand cmd) {
        // Validate
        // Create event
        var evt = new OrderPlacedEvent(cmd.OrderId, cmd.Items, DateTime.UtcNow);
        _events.Add(evt);
    }
}
```

### Benefits
- Complete history
- Temporal queries
- Event replay
- Audit trail
- Performance

### Challenges
- Event schema evolution
- Eventual consistency
- Performance with many events
- CQRS required

## CQRS (Command Query Responsibility Segregation)

### Pattern
- Separate read and write models
- Different data structures
- Synchronization via events

### Implementation
- Commands: Intent to change
- Queries: Read data
- Read models updated via events

### Benefits
- Optimized read/write
- Scalability
- Flexibility

## Best Practices
- Idempotent consumers
- Handle duplicates
- Order events appropriately
- Use correlation IDs
- Document event schemas (Avro, Protobuf)
- Version events
- Dead letter handling

