graphql publishes the websocket produced by the new measure service as a subscription
initial end to end feature:
postgres sends equilibrium insert notification, e.g. pg_notify("2024-08-07:gdp:usa:cal", "10");
event service listens for and receives equilibrium insert notification, then incrbys a redis gdp key, e.g. INCRBY 2024-08-27:gdp:usa:cal 10 which increments, for example, the california gdp value to 40
redis publishes the gdp value changed by incrby on a channel named after the gdp key, e.g. PUBLISH 2024-08-27:gdp:usa:cal 40
measure service subscribes to redis, then receives the changed gdp value and passes it to a websocket
graphql subscribes to gdp values sent on the measure service websocket and sends it to the public through a subscription
alternatives:
current design avoids weighing down graphql with a redis dependency and keeps its concern of serving as a lightweight, public api separate, but events can avoid a double hop with a direct subscription by graphql to redis
expected
graphql publishes the websocket produced by the new measure service as a subscription
initial end to end feature:
pg_notify("2024-08-07:gdp:usa:cal", "10");
INCRBY 2024-08-27:gdp:usa:cal 10
which increments, for example, the california gdp value to40
PUBLISH 2024-08-27:gdp:usa:cal 40
alternatives: current design avoids weighing down graphql with a redis dependency and keeps its concern of serving as a lightweight, public api separate, but events can avoid a double hop with a direct subscription by graphql to redis
hourly estimate
rust: 8 tests: 2 (shortened for poc)
total: 10