Cues provides ::q/exactly-once message delivery by default. With this PR you can now optionally configure graphs to use ::q/at-most-once delivery semantics instead:
With at most once semantics any processor step is only ever attempted once, and never retried. While failures may result in dropped messages, this provides two modest benefits if dropped messages are not a problem:
Approximately 30-40% faster graph performance
You can avoid implementing idempotency on side-effects using the delivery hash: processor steps are simply never retried
In contrast at least once semantics pose no meaningful benefits with respect to exactly once delivery, and so outside of processors with side-effects (where it is the default and explained previously) that strategy is not provided.
This PR
Cues provides
::q/exactly-once
message delivery by default. With this PR you can now optionally configure graphs to use::q/at-most-once
delivery semantics instead:With at most once semantics any processor step is only ever attempted once, and never retried. While failures may result in dropped messages, this provides two modest benefits if dropped messages are not a problem:
In contrast at least once semantics pose no meaningful benefits with respect to exactly once delivery, and so outside of processors with side-effects (where it is the default and explained previously) that strategy is not provided.