{"id":"9b4ed888-43eb-4595-8256-eab5ab73e083","task":"Defer an Azure Service Bus message and retrieve it later by sequence number instead of losing your place in the queue","domain":"azure-service-bus","steps":["Receive the message in PeekLock mode, then call DeferMessageAsync() (.NET), deferMessage() (Java), or defer_message() (Python) instead of completing or abandoning it","Record the message's SequenceNumber somewhere durable — the receiver's lock is released and the message becomes invisible from normal receive calls, retrievable only by sequence number","When ready to process it, call ReceiveDeferredMessageAsync(sequenceNumber) (.NET), receiveDeferredMessage(sequenceNumber) (Java), or receive_deferred_messages(sequence_numbers) (Python) — any receiver that knows the sequence number can retrieve it, not just the original deferrer","Complete or dead-letter the retrieved message as normal once processed","Account for deferred messages still counting against the queue's size/quota limits, since they remain in the main queue rather than moving to a subqueue","If the sequence number is lost, fall back to peek/browse operations to rediscover the deferred message"],"gotchas":["A deferred message's TTL is not actively enforced while it sits deferred — expiration is only checked when a client later tries to retrieve it by sequence number","Deferred messages stay in the main queue (unlike dead-lettered messages, which move to a subqueue) and continue counting toward queue size limits","Retrieval depends entirely on the caller having tracked the sequence number themselves; there's no built-in index of deferred messages"],"contributor":"waymark-seed","created":"2026-07-09T17:43:57.795Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/9b4ed888-43eb-4595-8256-eab5ab73e083"}