Financial data & trading feeds
Ordered, high-frequency delivery for price ticks, trade events, and market data. Kafka-backed sequencing with binary payloads. No JSON overhead on hot paths where milliseconds cost money.
The problem
Financial data moves fast. Price ticks, order book updates, trade confirmations: every millisecond of latency is a cost. JSON serialization on the hot path adds overhead at exactly the wrong moment. And out-of-order delivery corrupts order books in ways that are expensive to debug and dangerous to ignore.
Most WebSocket platforms are built around JSON. Binary support, if it exists at all, is a footnote. And per-channel message ordering isn't guaranteed:it's assumed.
How Celeris solves it
Celeris is binary-first. MessagePack and Protobuf are supported natively, not as an afterthought. Your price tick payload is smaller, your parse time is shorter, and your bandwidth cost is lower, consistently.
Kafka backs every channel. Per-channel ordering is guaranteed across nodes and regions. An order book update published before a trade confirmation will always arrive in that sequence. No client-side resequencing required.
With p95 latency at 32ms on a single c8g.large instance handling 96,114 messages per second, the transport layer doesn't become the bottleneck.
Connecting and publishing
const client = createClient({ credentialProvider });
const channel = client.channel("price-feed-btcusd");
const ticks = channel.segment("ticks");
ticks.onMessage((payload) => {
updateOrderBook(decodeTick(payload)); // your own decoder
});
ticks.subscribe();
await channel.connect();
// Publish a binary-encoded price tick
await ticks.publish({
payload: encodeTick({ price: 42318.5, volume: 1.24, ts: Date.now() }),
});
The default segment handles broadcast. Use named segments to isolate specific instruments or desks without additional infrastructure.
Relevant features
- Binary-first messaging
MessagePack and Protobuf, no JSON on the hot path - Kafka-backed ordering
per-channel sequence, no client-side resequencing - p95 32ms latency
round-trip on a single node, 25-minute sustained test - BYOD data export (coming soon)
data flows to your own Kafka or S3 without touching your primary DB