System State Store to Component

Asynchronous Event Distribution with Pub/Sub and Consumer State Stores

In a RECQ architecture, the System State Store (SSS) utilizes a pub/sub (publish/subscribe) protocol for distributing information about state changes to interested components. This approach decouples the SSS from individual components and enables efficient event delivery.

The Role of Consumer State Stores (CSS):

  • Persistent Event Consumption Progress: CSS modules are introduced to maintain the state of event consumption by individual components. This persistence allows for:

    • Retry Logic: If a component fails to process an event, the CSS can track the consumed events and enable retries upon recovery.

    • Orderly Progress: The CSS ensures that events are processed in the correct order, even in the face of failures or restarts.

    • Consistency: By tracking consumption progress, the CSS helps maintain consistency between the state reflected in the component and the actual state stored in the SSS.

Communication Protocol:

  • Pub/Sub with the SSS:

    • The SSS acts as the publisher in the pub/sub model.

    • Whenever a new event is persisted in the SSS (e.g., after a state change), the SSS publishes the event message to a topic.

    • Topics are named channels that categorize events based on their type or purpose.

  • Subscription by Components:

    • Components interested in receiving specific events subscribe to relevant topics managed by the SSS.

    • Subscription allows components to filter the events they receive, ensuring they only process the data they need.

  • Consumer State Stores:

    • Components retrieve their specific consumption progress information from their associated CSS.

    • This information allows components to identify the last successfully processed event and avoid duplicate processing.

    • The CSS can also be used to store additional context related to event consumption by the component.

Benefits of Pub/Sub and Consumer State Stores:

  • Scalability: The pub/sub pattern decouples the SSS from individual components, allowing for independent scaling of both components and the SSS.

  • Flexibility: Components can subscribe to specific topics, receiving only the events relevant to their functionality.

  • Resilience: Consumer State Stores enable retry logic and ensure orderly event processing even in the face of failures.

Last updated