Skip to content

Kafka Events

This document provides comprehensive documentation of all Kafka events and topics used in the TradeX platform.

All events follow a common envelope structure:

{
"event_id": "UUIDv7",
"event_type": "topic.name.v1",
"source_service": "service-name",
"trace_id": "OpenTelemetry trace ID",
"timestamp": "ISO8601 UTC timestamp",
"version": "v1",
"hmac": "optional HMAC signature",
"data": { /* event-specific data */ }
}

Matching engine events including trades, order book deltas, and order status updates.

Event Types:

  • TRADE - Trade execution
  • BOOK_DELTA - Order book delta update
  • ORDER_ACCEPTED - Order accepted by engine
  • ORDER_FILLED - Order fully filled
  • ORDER_CANCELED - Order canceled
  • ORDER_REJECTED - Order rejected

Trade Data:

{
"trade_id": "UUID",
"price": 50000.0,
"qty": 1.5,
"taker_side": "BUY",
"maker_order_id": "UUID",
"taker_order_id": "UUID",
"maker_user_id": "UUID",
"taker_user_id": "UUID",
"is_buyer_maker": true
}

Book Delta Data:

{
"bids": [
{ "price": 50000.0, "qty": 1.5 }
],
"asks": [
{ "price": 50001.0, "qty": 2.0 }
]
}

Consumers:

  • Market Data Service
  • Order Service
  • Position Service

Order book snapshots for full order book state.

Consumers:

  • Market Data Service

Order book hash events for integrity verification.

Consumers:

  • Market Data Service

Normalized trade events published per symbol. The topic name follows the pattern md.trades.v1.{symbol} where {symbol} is the trading pair (e.g., BTCUSDT-PERP).

Data:

{
"symbol": "BTCUSDT-PERP",
"trade_id": "UUID",
"price": 50000.0,
"quantity": 1.5,
"side": "BUY",
"timestamp": 1234567890123
}

Publishers:

  • Market Data Service

Consumers:

  • Analytics services
  • Reporting services

Order book delta updates.

Publishers:

  • Market Data Service

Order book snapshots.

Publishers:

  • Market Data Service

OHLCV candlestick updates.

Publishers:

  • Market Data Service

24-hour ticker statistics.

Publishers:

  • Market Data Service

Mark price updates.

Publishers:

  • Market Data Service

Index price updates.

Publishers:

  • Market Data Service

Funding rate updates.

Publishers:

  • Market Data Service

Instrument creation events.

Data:

{
"symbol": "BTCUSDT-PERP",
"instrument_id": "UUID",
"status": "active",
"created_at": "ISO8601 timestamp"
}

Publishers:

  • Metadata Service

Consumers:

  • All services (for instrument updates)

Instrument update events.

Publishers:

  • Metadata Service

Instrument halt events.

Publishers:

  • Metadata Service

Instrument resume events.

Publishers:

  • Metadata Service

Index price configuration created.

Publishers:

  • Metadata Service

Index price configuration updated.

Publishers:

  • Metadata Service

Index price configuration deleted.

Publishers:

  • Metadata Service

Risk configuration updated.

Publishers:

  • Metadata Service

Funding configuration updated.

Publishers:

  • Metadata Service

Fee configuration updated.

Publishers:

  • Metadata Service

Balance change events.

Data:

{
"user_id": "UUID",
"currency": "USDT",
"balance_delta": {
"available": 1000.0,
"held": 100.0
},
"balance_snapshot": {
"available": 5000.0,
"held": 500.0,
"total": 5500.0
}
}

Publishers:

  • Wallet Service

Consumers:

  • All services (for balance updates)

Deposit confirmation events.

Publishers:

  • Wallet Service

Withdrawal request events.

Publishers:

  • Wallet Service

Withdrawal completion events.

Publishers:

  • Wallet Service

Withdrawal failure events.

Publishers:

  • Wallet Service

Withdrawal locked events.

Publishers:

  • Wallet Service

Balance hold creation events.

Publishers:

  • Wallet Service

Balance hold release events.

Publishers:

  • Wallet Service

Ledger entry posted events.

Publishers:

  • Wallet Service

Admin balance adjustment events.

Publishers:

  • Wallet Service

Authentication creation events.

Publishers:

  • Auth Service

User login events.

Publishers:

  • Auth Service

Consumers:

  • User Service

Account creation events.

Publishers:

  • Auth Service

Consumers:

  • User Service
  • Wallet Service

Account activation events.

Publishers:

  • Auth Service

Account deactivation events.

Publishers:

  • Auth Service

Account deletion events.

Publishers:

  • Auth Service

User creation events.

Publishers:

  • User Service

Consumers:

  • Wallet Service (for initial wallet setup)

User update events.

Publishers:

  • User Service

User verification events.

Publishers:

  • User Service

User frozen events.

Publishers:

  • User Service

User unfrozen events.

Publishers:

  • User Service

KYC initiation events.

Publishers:

  • User Service

KYC update events.

Publishers:

  • User Service

Order command events (order creation, cancellation, replacement).

Publishers:

  • Order Service

Consumers:

  • Matching Engine

Simulated quote events (shadow mode only).

Data:

{
"symbol": "BTCUSDT-PERP",
"bid_price": 49995.0,
"ask_price": 50005.0,
"bid_qty": 1.0,
"ask_qty": 1.0,
"mid_price": 50000.0,
"spread_bps": 10.0,
"inventory_usdt": 500.0,
"timestamp": 1234567890123
}

Publishers:

  • Market Maker Service (shadow mode)

Consumers:

  • Analytics services
  • Testing/validation tools

Risk event notifications (kill switch, limit breaches).

Data:

{
"symbol": "BTCUSDT-PERP",
"trigger_type": "EXPOSURE_BREACH",
"reason": "Position exceeded max_position_usdt",
"current_position_usdt": 10500.0,
"max_position_usdt": 10000.0,
"current_pnl_usdt": -450.0,
"max_loss_usdt": 500.0,
"timestamp": 1234567890123
}

Trigger Types:

  • EXPOSURE_BREACH - Position exceeds max_position
  • LOSS_BREACH - Total P&L exceeds max_loss
  • MARKET_HALT - Exchange halted the symbol
  • KAFKA_LAG - Consumer lag exceeds threshold
  • REJECT_STORM - Too many order rejections
  • RESPONSE_TIMEOUT - Order Service timeout

Publishers:

  • Market Maker Service

Consumers:

  • Monitoring systems
  • Alerting services
  • Risk management systems

State transition events (ACTIVE ↔ PAUSED ↔ HALTED).

Data:

{
"symbol": "BTCUSDT-PERP",
"previous_state": "ACTIVE",
"new_state": "HALTED",
"reason": "Kill switch triggered: EXPOSURE_BREACH",
"timestamp": 1234567890123
}

States:

  • ACTIVE - Market making is active, placing and managing orders
  • PAUSED - Market making is paused, no new orders placed
  • HALTED - Market making is halted due to risk trigger, requires manual reset

Publishers:

  • Market Maker Service

Consumers:

  • Monitoring systems
  • Operations dashboards
  • Alerting services

Each service uses a unique consumer group:

  • marketdata-service - Market data events
  • order-service - Order and trade events
  • user-service - User and auth events
  • wallet-service - Wallet events
  • market-maker-service - Market data and engine events
  • At-least-once delivery: Events may be delivered multiple times
  • Idempotent processing: Consumers should handle duplicate events
  • Ordering: Events are ordered per partition

All events use Avro schemas registered in the Schema Registry:

  • Schema Location: shared/kafka-schema/
  • Registry URL: Configured via SCHEMA_REGISTRY_URL
  • Schema Evolution: Backward compatible changes supported