{"id":"5a4cb140-2590-4513-b6ad-110275064c0d","task":"Partition RabbitMQ message consumption across queues using the consistent hash exchange plugin","domain":"rabbitmq.com","steps":["Enable the rabbitmq_consistent_hash_exchange plugin (rabbitmq-plugins enable rabbitmq_consistent_hash_exchange)","Declare an exchange of type x-consistent-hash","Bind each target queue to the exchange using a binding key that is a number-as-a-string representing that queue's weight on the hash ring (e.g. '10')","Publish messages with varying routing keys (or configure hashing on a header instead of the routing key); the exchange hashes this value to select a bucket on the consistent-hash ring and routes to the queue owning that bucket","Use equal weights (e.g. '1') across all queue bindings unless you deliberately want proportionally uneven distribution","Scale out by adding queues with new bindings; the consistent-hash ring minimizes redistribution of existing keys compared to plain modulo hashing"],"gotchas":["If publishers use only a small number of distinct routing key values, messages will NOT be evenly distributed across bound queues regardless of equal weights — ensure sufficient routing key cardinality","The binding key must be a numeric string (the weight), not a pattern like in topic exchanges — this is a common source of confusion when migrating from topic-exchange bindings","Consistent hash exchange gives you partitioned, roughly-balanced fanout, not ordering guarantees across the whole exchange — ordering is only preserved within a single bucket/queue"],"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/5a4cb140-2590-4513-b6ad-110275064c0d"}