Messaging Subject Map: YU10-fix-ingress
This state adds no NATS subject (its new surface is the FIX endpoint listed at the end); every entry below is carried forward unchanged from
YU09-ops-hardening.
Subject Familiesβ
-
/trades- producer:
trade-service - consumer:
trade-processor - delivery:
point-to-point - wildcard:
no - scope:
global - payload: validated trade order with stamped execution price
- producer:
-
/accounts/<accountId>/trades- producer:
trade-processor - consumer: frontend trade blotter stream,
tick-storecapture - delivery:
broadcast - wildcard:
no(consumed with wildcard/accounts/*/trades) - scope:
per-account - payload: processed trade (includes
price)
- producer:
-
/accounts/<accountId>/positions- producer:
trade-processor - consumer: frontend position blotter stream
- delivery:
broadcast - wildcard:
no - scope:
per-account - payload: position snapshot (includes
averageCostBasis)
- producer:
-
pricing.<TICKER>- producer:
price-publisher - consumer: frontend valuation streams,
trade-processor's EOD closing-price source,tick-storecapture - delivery:
broadcast - wildcard:
yes(pricing.*) - scope:
per-ticker - payload: market tick (
price,openPrice,closePrice,asOf,source)
- producer:
-
/accounts/<accountId>/orders- producer:
order-matcher - consumer: frontend account order blotter stream,
execution-algo-enginefill tracking (new; subscribes to NATS's catch-all>and filters client-side by subject prefix/suffix, since the literal/-separated subject has no.-token position for a real NATS wildcard; research.md Decision 5) - delivery:
broadcast - wildcard:
no(no NATS-native wildcard is possible on this subject shape at all) - scope:
per-account - payload:
NatsEnvelopewrapping an order lifecycle event (orderId,status,remainingQuantity,limitPrice,lastExecutionPrice) underpayload
- producer:
-
/orders- producer:
order-matcher - consumer: frontend admin order blotter stream
- delivery:
broadcast - wildcard:
no - scope:
global - payload: order lifecycle event (
orderId,accountId,status,remainingQuantity,limitPrice)
- producer:
-
eod.prices.ready(JetStream, streamTRADERX_EOD)- producer:
trade-processor - consumer:
position-service(durable consumereod-pnl) - delivery:
durable point-to-point(JetStream file storage; redelivered until acked) - wildcard:
no - scope:
global - payload: gate event (
sessionDate,version,instrumentCount,publishedAtMillis)
- producer:
-
eod.pnl.done(JetStream, streamTRADERX_EOD)- producer:
position-service - consumer: none within this state (chain-link event for a future overnight-batch subscriber)
- delivery:
durable broadcast(JetStream file storage) - wildcard:
no - scope:
global - payload: completion event (
sessionDate,version,accountsMarked,accountsHalted,completedAtMillis)
- producer:
-
algo.events.>(JetStream, streamTRADERX_ALGO_ENGINE, new)- producer:
execution-algo-engine - consumer:
execution-algo-engine(durable consumeralgo-engine-state, itself; no other subscriber in this state) - delivery:
durable point-to-point(JetStream file storage; explicit ack after applying to in-memory state, so a crash between append and ack redelivers) - wildcard:
yes(subject per event carriesalgo.events.<parentOrderId>) - scope:
global - payload: parent-order lifecycle event (
type,parentOrderId, plus type-specific fields; seedata-model.md)
- producer:
execution-algo-engine introduces one new JetStream stream (its own event log, published and
consumed only by itself) and one new subscriber on the two rows marked (new) above; it publishes
nothing to core NATS.
YU10 addition: FIX session endpoint (non-NATS)β
YU10 adds no NATS subject. Its new wire surface is a FIX 4.4 TCP endpoint, listed here so this map remains the complete inventory of the state's messaging surfaces:
| Endpoint | Transport | Producer -> Consumer | Payload | Scope |
|---|---|---|---|---|
order-matcher:18130 | FIX 4.4 / TCP (point-to-point session) | FIX initiator <-> order-matcher acceptor | FIX 4.4 messages: A/0/1/2/3/4/5 session-level; D/F/H in; 8/9 out (see contracts/contract-delta.md) | cluster-internal |