You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Bertram (JIRA)" <ji...@apache.org> on 2018/04/11 14:31:00 UTC
[jira] [Commented] (ARTEMIS-1802) Cannot use the same name for a
divert and an address
[ https://issues.apache.org/jira/browse/ARTEMIS-1802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16434000#comment-16434000 ]
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 address.
You might be able to achieve the semantics you're looking for with this configuration:
{noformat}
<addresses>
<!-- the receiving topic "foo" -->
<address name="foo">
<multicast>
<queue name="foo-test"/>
<queue name="foo-prod"/>
</multicast>
</address>
...
</addresses>
{noformat}
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
(v7.6.3#76005)