One Drop Copy
Empty
symbols is the whole firm. One leader-elected consumer per environment.Commit, then resume
Persist
resume_token only after every execution in that batch is durable. Dedup on execution.id.20 streams total
The 20 concurrent-stream budget is pooled across all gRPC subscriptions, not 20 per RPC.
How many streams
Full numbers: Rate Limits.
Snapshot vs resume
Not every stream starts with a snapshot. Do not copy a snapshot client onto Drop Copy.
Unary reads (
SearchExecutions, SearchTrades, GetOrderBook) are anchors, not a substitute for the stream. See Reconciliation.
The reconnect-cancel loop
What goes wrong
What goes wrong
A behind
resume_token is normal after a restart. The server replays from that point up to live. Replay can take longer than a few seconds.If the client sets a short RPC deadline, or a 10-second “no message means dead” timer that fires during replay, it cancels the stream. The next connect uses the same behind token. Replay starts over. You never reach live, and the exchange keeps replaying.What to do instead
What to do instead
- Open one Drop Copy stream with
symbols=[]. - Do not set a per-RPC timeout of a few seconds.
- Apply each batch, then persist
response.resume_token. - On
UNAVAILABLEor a real disconnect, back off and reconnect with that token. - Treat
CANCELLEDyou caused (process restart, deadline) as your bug, not a signal to hammer reconnect.
Do / don’t
- Drop Copy
- Market data
- Orders and ledger
CreateOrderSubscription over 1000 symbols is not the market-data cap. Market data over 1000 is INVALID_ARGUMENT (at most 1000 symbols per subscription). Hitting RESOURCE_EXHAUSTED on a stream is the 20 concurrent-stream budget, ingress rate, or a too-large message — not the 1000 check. Details: Order stream.Limits that matter here
See Rate Limits and Authentication.
Client shape
Wrong
Right
apply_batch must be idempotent. Delivery is at-least-once. Use execution.id (and trade_id on fills) as the unique key.
FIX Drop Copy
If you consume fills on FIX instead of gRPC, that is one Drop Copy session, not a gRPC stream per order. See FIX Drop Copy. Do not run a reconnecting gRPC Drop Copy and a FIX DC session against the same work unless you can dedup.Related
Drop Copy stream
Executions, trade capture, state change, positions
Reconciliation
Streams first, unary reads as anchors
Market data stream
1000-symbol cap, snapshot vs live, keepalive
Rate limits
20 streams, 100 msg/s ingress, RFQ open rate