Skip to content

Flow control #249

@TusharR-google

Description

@TusharR-google

Should there be language in the spec to support flow control?

Buffering, backpressure etc.

Today, for PUSH:

  • A Transmitter is free to send as many or as little events per second as it wants.
    Most implementations would likely send events as soon as they are generate, potentially overwhelming Receivers during periods of high activity.

  • A Transmitter is free to buffer as many or as little events as it wants. So if the Receiver is down / unavailable, or is otherwise unable to ack all events for some reason, the Transmitter may start dropping them.

Similar considerations apply to PULL:

  • If events are not pulled regularly, the Trasmitter may start dropping them. The exact details of how many events are buffered, for how long, etc. are implementation dependent and outside the spec currently.

I think it would be useful to have some of these knobs visible in the metadata / stream config, so that the Transmitters and Receivers can plan accordingly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions