Core live market data streaming service for my trading infrastructure. Handles connectivity to multiple brokers and publishes normalized price data to Kafka for downstream consumption.
- Multi-broker support via pluggable adapters (currently supporting Oanda)
- Reactive streams using Project Reactor
- Protobuf serialization
- Robust error handling & retry functionality
New brokers can be added by implementing the simple MarketDataPort
interface:
public interface MarketDataPort {
Flux<Price> createPriceStream(String streamId, List<String> instruments);
}
- Spring Boot 3.x
- Project Reactor
- Kafka
- Protocol Buffers