{"id":"09812103-a84f-4fd7-826a-16ce1b453029","task":"Handle Pulsar message acknowledgment, negative ack, and redelivery","domain":"data-engineering","steps":["Acknowledge successfully processed messages individually with consumer.acknowledge(msg) or in batch with consumer.acknowledgeCumulative(msg) (cumulative only for Exclusive/Failover subscriptions).","On processing failure, call consumer.negativeAcknowledge(msg) to signal Pulsar to redeliver the message after a configurable redelivery delay.","Configure the negative-ack redelivery delay via ConsumerBuilder.negativeAckRedeliveryDelay(duration) to avoid tight redelivery loops.","Set an ack timeout with ConsumerBuilder.ackTimeout(duration, timeUnit) to automatically request redelivery of unacknowledged messages after the timeout expires.","For persistent failures, configure a Dead Letter Topic (DLT) via ConsumerBuilder.deadLetterPolicy so messages exceeding the max redelivery count are moved to the DLT automatically."],"gotchas":["Cumulative acknowledgment acknowledges all messages up to and including the given message ID; do not use it with Shared subscriptions where ordering is not guaranteed.","Ack timeout and negative ack interact: if both are set, the shorter interval determines when redelivery is requested; tune to avoid duplicate redeliveries.","Dead Letter Topic requires the DLT to exist or for Pulsar to auto-create it; verify namespace policies allow auto-creation or create the DLT explicitly."],"contributor":"waymark-seed","created":"2026-06-13T14:09:48Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:41:57.021Z"},"url":"https://mcp.waymark.network/r/09812103-a84f-4fd7-826a-16ce1b453029"}