<div dir="ltr">Simon,<div><br></div><div>Thanks for your reply - it was very helpful.</div><div><br></div><div>Regards,</div><div><br></div><div>Richard</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Mon, Oct 21, 2013 at 8:30 AM, Simon MacMullen <span dir="ltr">&lt;<a href="mailto:simon@rabbitmq.com" target="_blank">simon@rabbitmq.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On 17/10/2013 12:13AM, Richard Raseley wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This leaves me with the following questions:<br>
<br>
1) Is it true to say that it is now just a matter of choosing what<br>
tradeoff we want to make in terms of performance vs. uniformity of<br>
distribution?<br>
</blockquote>
<br></div>
Yes.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2) Can anyone comment on Michael&#39;s previous comment on how using a<br>
UUID would be handled as the value in the hashed header? The numbers<br>
above don&#39;t seem to show a large difference between using a random<br>
integer and a UUID.<br>
</blockquote>
<br></div>
No, they don&#39;t. The actual hashing is done by the Erlang function phash2, which will hash a UUID or an integer or any Erlang term.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
As a final question, can anyone on the engineering team provide a<br>
recommendation as to the best way to generate a header value for<br>
hashing use in terms of what will implicitly provide the most even<br>
distribution?<br>
</blockquote>
<br></div>
It doesn&#39;t matter.<br>
<br>
Yeah, this confused me too when I first started looking at the hashing exchange. As long as you use something that tends towards unique-ish values then any unevenness in the routing displayed by the CHX is caused by the distribution of the buckets in its routing table - this is influenced by the number of points each binding has (as you have already noted) *and nothing else*.<br>

<br>
You can observe this easily - create some queues and bindings with 1 point each. Then publish some messages with random integers as the routing keys. Observe the uneven distribution. Then purge all the queues (but don&#39;t delete and start again) and re-run the test with UUIDs or message sequence IDs or whatever. Not only will the distribution still be uneven, but it will be uneven in exactly the same way.<br>

<br>
Cheers, Simon<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Simon MacMullen<br>
RabbitMQ, Pivotal<br>
</font></span></blockquote></div><br></div>