[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-delivery-semantics::en":3,"gloss-cluster-delivery-semantics::en":26,"gloss-next-delivery-semantics::en":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"delivery-semantics","data-infra","Delivery Semantics","Delivery semantics describe the guarantee a messaging system gives about how many times a message reaches its consumer: at-most-once, at-least-once, or exactly-once. At-most-once may drop messages but never duplicates them. At-least-once never loses a message but may deliver it more than once after a retry. Exactly-once is the ideal and the hardest — every message lands once, no loss, no duplicate.\n\nIn practice, most queues and streams (SQS, Kafka, RabbitMQ) default to at-least-once, because guaranteeing no loss is easier than guaranteeing no duplicate. True exactly-once usually isn't end-to-end magic; it's at-least-once delivery plus idempotent consumers that deduplicate on a message key.\n\nFor SaaS builders, this choice governs correctness in anything that charges money or mutates state. Practical note: assume at-least-once and make your handlers idempotent — store a processed-message ID, or use an upsert — so a redelivered 'charge card' event doesn't bill the customer twice.","Delivery semantics are the guarantee about how often a message reaches its consumer — at-most-once, at-least-once, exactly-once — and each shifts work onto you.",null,[11,14,17,20,23],{"slug":12,"name":13},"dead-letter-queue","Dead-Letter Queue (DLQ)",{"slug":15,"name":16},"eventual-consistency","Eventual Consistency",{"slug":18,"name":19},"message-queue","Message Queue",{"slug":21,"name":22},"streaming-data-processing","Streaming Data Processing",{"slug":24,"name":25},"transactional-outbox","Transactional Outbox",[27,31,34,37,40,44,47,50,53,56,60,63],{"slug":28,"category":5,"name":29,"updated_at":30},"acid","ACID","2026-08-24T02:46:37+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"ann-search","ANN Search",{"slug":35,"category":5,"name":36,"updated_at":30},"backpressure","Backpressure",{"slug":38,"category":5,"name":39,"updated_at":30},"batch-processing","Batch Processing",{"slug":41,"category":5,"name":42,"updated_at":43},"bm25","BM25","2026-08-24T02:46:38+00:00",{"slug":45,"category":5,"name":46,"updated_at":30},"cache","Cache",{"slug":48,"category":5,"name":49,"updated_at":30},"cap-theorem","CAP Theorem",{"slug":51,"category":5,"name":52,"updated_at":30},"change-data-capture","Change Data Capture (CDC)",{"slug":54,"category":5,"name":55,"updated_at":30},"chroma","Chroma",{"slug":57,"category":5,"name":58,"updated_at":59},"chunk-overlap","Chunk Overlap","2026-08-24T03:30:02+00:00",{"slug":61,"category":5,"name":62,"updated_at":30},"columnar-storage","Columnar Storage",{"slug":64,"category":5,"name":65,"updated_at":30},"connection-pooling","Connection Pooling"]