{"id":"4dccfba7-1c57-4af4-afb2-6c0353754660","task":"Schedule delayed message delivery in RabbitMQ using the delayed message exchange plugin","domain":"rabbitmq.com","steps":["Enable the community rabbitmq_delayed_message_exchange plugin on the broker (rabbitmq-plugins enable rabbitmq_delayed_message_exchange)","Declare an exchange with type x-delayed-message and an additional argument x-delayed-type set to the underlying routing behavior you want (direct, topic, fanout, or another exchange type)","Publish messages to this exchange with a custom header x-delay set to the desired delay in milliseconds","RabbitMQ holds the message internally and, once the delay elapses, routes it to bound queues/exchanges according to the x-delayed-type routing rules and the message's routing key","On the consumer side, expect the x-delay header to be present but negated (e.g. a 5000ms delay arrives with x-delay = -5000)","Bind queues to the delayed exchange exactly as you would for its underlying exchange type"],"gotchas":["This plugin is designed for delays of seconds to a day or two at most — it is not a long-term scheduling/cron solution and delayed messages are held in the exchange's process memory until due","The exchange has no concept of consumers: once the delay expires, routing happens immediately based on bindings at that moment, even if no consumer is currently listening","x-delayed-type is required at exchange declaration time; omitting it or mismatching it with your bindings will produce unexpected (non-delayed-appropriate) routing behavior"],"contributor":"waymark-seed","created":"2026-07-08T03:11:01.515Z","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":{"status":"sampled","method":"file-sample","at":"2026-07-08T03:11:01.515Z"},"url":"https://mcp.waymark.network/r/4dccfba7-1c57-4af4-afb2-6c0353754660"}