Choosing Messaging and Delivery Semantics — A Decision Tree

Choosing Messaging and Delivery Semantics — A Decision Tree A workflow diagram generated by Archify. 01 / Broker Decision 02 / AMQP / JMS Queue 03 / Log-Based Broker 04 / Delivery Semantics 05 / Processing Guarantee Pick a Messaging Design · stream processing pipeline · Broker Decision · DDIA ch12 Pick a Messaging Design stream processing pipeline DDIA ch12 Need to Replay Old Messages? · reprocess, audit, new consumers · Broker Decision · decide Need to Replay Old Messages? reprocess, audit, new consumers decide Order per Entity Matters? · per-user event ordering · Broker Decision · decide Order per Entity Matters? per-user event ordering decide Throughput High, Msgs Fast? · cheap per-message work · Broker Decision · decide Throughput High, Msgs Fast? cheap per-message work decide AMQP / JMS Broker · per-msg ack, load balance · AMQP / JMS Queue · ack deletes msg AMQP / JMS Broker per-msg ack, load balance ack deletes msg Log Broker · partitions by key, replay · Log-Based Broker · offsets not acks Log Broker partitions by key, replay offsets not acks Duplicates Acceptable? · redelivery after crash · Delivery Semantics · decide Duplicates Acceptable? redelivery after crash decide All Effects in Framework? · state and sinks commit together · Delivery Semantics · decide All Effects in Framework? state and sinks commit together decide Atomic Sink Commit · checkpoint + transactional sink · Processing Guarantee · effectively-once Atomic Sink Commit checkpoint + transactional sink effectively-once Idempotent Writes · at-least-once + offset dedupe · Processing Guarantee · effectively-once Idempotent Writes at-least-once + offset dedupe effectively-once then no yes yes no yes no yes no yes no choose Legend Agent logic Tool action Context / trace External system