Ok,<br>Thanks for this Idea and the time spent, i will try to implement such an exchange. Keep you informed !<br><br>Cheers<br>Romain<br><br><div class="gmail_quote">2010/10/8 Matthias Radestock <span dir="ltr"><<a href="mailto:matthias@rabbitmq.com">matthias@rabbitmq.com</a>></span><br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">Romain,<div class="im"><br>
<br>
Romain Conseil wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
as you will see in the previous message, I tested the two settings for exchanges (with x-lvc / with direct) : the difference is only 10% oc CPU load and is still at 120% with direct exchanges.<br>
</blockquote>
<br></div>
Missed that, sorry. And thinking about it, 120% CPU for a 10kHz publisher stream sounds about right - I get similar figures on my machine.<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
the problem is to have a routeIds list uptodate which requires :<br>
- to know the all list of bindings at pblisher startup<br>
- to be notify of each new binding when running.<br>
<br>
Would this be possible ?<br>
</blockquote>
<br></div>
You could write a custom exchange type that captures the bind/unbind events. It would maintain internal state (in mnesia, perhaps) to count the number of bindings per routeId. Whenever that count transitions between zero and non-zero it would publish an message to an exchange, with the routeId as the routing key.<br>
<br>
Producers could then bind to that exchange to receive a stream of bind/unbind events relevant to them. And making that exchange an lvc exchange allows new producers to learn about the current state.<br>
<br>
<br>
Regards,<br><font color="#888888">
<br>
Matthias.<br>
</font></blockquote></div><br>