<div>The fanout + alternate-exchange for junk works, except I can't make these extra exchanges exclusive like I can when declaring a server assigned, exclusive, autodelete queue with queueDeclare(). That's probably not a big deal, as nobody would likely guess the names of these extra exchanges.</div>
<div><br></div><div>I think I'd take a simple negation binding over a full regex if there are performance implications. Negation bindings obviously would need to be declared before other bindings or a match could be found before it got to the negation, but I think that's reasonable - typical rules processing works this way. It doesn't seem like with these types of negations would have performance implications with the caveat that they must be earlier in the list of bindings.</div>
<div><div><div><br><div class="gmail_quote">On Thu, Sep 13, 2012 at 10:53 AM, Laing, Michael P. <span dir="ltr"><<a href="mailto:Michael.Laing@nytimes.com" target="_blank">Michael.Laing@nytimes.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We would find a regular expression matching option for topic exchanges<br>
most useful.<br>
<br>
My 2 cents :)<br>
<br>
Michael<br>
<div><div class="h5"><br>
On 9/13/12 4:40 AM, "Simon MacMullen" <<a href="mailto:simon@rabbitmq.com">simon@rabbitmq.com</a>> wrote:<br>
<br>
>On 12/09/2012 8:37PM, Dave Curylo wrote:<br>
>> Is it possible to bind a queue to a topic exchange with a condition that<br>
>> the topic does NOT match a certain wildcard?<br>
><br>
>The topic exchange doesn't have that logic. But you can fake it with the<br>
>alternate exchange feature, at the cost of a few more exchanges.<br>
><br>
>Declare a fanout exchange you'll publish to (let's call it<br>
>"my-exchange"). Declare a fanout exchange called "junk".<br>
><br>
>The when each consumer declares a queue, it also declares a topic<br>
>exchange and a fanout exchange. The alternate-exchange for the topic<br>
>exchange should be set to the fanout exchange. It then binds the topic<br>
>exchange to "my-exchange", and "junk" to the topic exchange, with a<br>
>routing key equal to the topics it doesn't want.<br>
><br>
>Thus messages with the "bad" routing key go:<br>
><br>
> [my-exchange] -> [per-consumer-topic] -> [junk]<br>
><br>
>and the rest go:<br>
><br>
> [my-exchange] -> [per-consumer-topic] -> [per-consumer-fanout] -><br>
>[per-consumer-queue]<br>
><br>
>I think that's the simplest you can make it. But exchanges are cheap in<br>
>general, it's just routing logic.<br>
><br>
>But I wonder whether some sort of more explicit negation feature would<br>
>be feasible / useful. Hmm.<br>
><br>
>Cheers, Simon<br>
</div></div>>_______________________________________________<br>
>rabbitmq-discuss mailing list<br>
><a href="mailto:rabbitmq-discuss@lists.rabbitmq.com">rabbitmq-discuss@lists.rabbitmq.com</a><br>
><a href="https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">https://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br>
<br>
</blockquote></div><br></div></div></div>