Justin Bertram commented on ARTEMIS-1802:

Internally in the broker a _queue_ and _divert_ are actually the same kind of 
thing. They are both "bindings." In other words, both diverts and queues are 
_bound_ to an address; they just do different things with the messages they 
receive. A _queue_ receives a message sent to an address and stores it. A 
_divert_ receives a message sent to an address and diverts it to another 

You might be able to achieve the semantics you're looking for with this 
        <!-- the receiving topic "foo" -->
        <address name="foo">
            <queue name="foo-test"/>
            <queue name="foo-prod"/>
Using this configuration any message sent to the address "foo" will go into the 
queues "foo-test" and "foo-prod."

> Cannot use the same name for a divert and an address
> ----------------------------------------------------
>                 Key: ARTEMIS-1802
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1802
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>    Affects Versions: 2.5.0
>            Reporter: Lionel Cons
>            Priority: Major
> I'm trying to use diverts to emulate ActiveMQ 5's virtual destinations 
> (http://activemq.apache.org/virtual-destinations.html). The use case is a 
> single topic ({{foo}}) bound to two queues ({{foo-test}} and {{foo-prod}}).
> The following configuration snippet almost works:
> {code}
>       <addresses>
>         <!-- the receiving topic "foo" -->
>         <address name="foo">
>           <multicast/>
>         </address>
>         <!-- the backend queue "test" -->
>         <address name="foo-test">
>           <anycast>
>             <queue name="foo-test"/>
>           </anycast>
>         </address>
>         <!-- the backend queue "prod" -->
>         <address name="foo-prod">
>           <anycast>
>             <queue name="foo-prod"/>
>           </anycast>
>         </address>
>         ...
>       </addresses>
>       <diverts>
>         <!-- the divert to copy from "foo" to "foo-test" -->
>         <divert name="foo-test">
>           <address>foo</address>
>           <forwarding-address>foo-test</forwarding-address>
>           <exclusive>false</exclusive>
>         </divert>
>         <!-- the divert to copy from "foo" to "foo-prod" -->
>         <divert name="foo-prod">
>           <address>foo</address>
>           <forwarding-address>foo-prod</forwarding-address>
>           <exclusive>false</exclusive>
>         </divert>
>       </diverts>
> {code}
> Artemis give me an error:
> {code}
> AMQ222006: Binding already exists with name foo-test, divert will not be 
> deployed
> {code}
> Changing the divert names fixes the problem.
> Why can't I use the same name both for the queue and the divert feeding the 
> queue?
> Since these are different kinds of objects, I should be able to reuse the 
> same name, shouldn't I?

This message was sent by Atlassian JIRA

Reply via email to