activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Bain <tb...@alumni.duke.edu>
Subject Re: Bridging virtual topics
Date Thu, 21 May 2015 15:10:13 GMT
I thought about it some more and I think I misunderstood the statement at
the bottom of http://activemq.apache.org/virtual-destinations.html.  I
believe that guidance says that you should always include
Consumer.*.VirtualTopic.> unless you have a consumer directly on the
destination itself (that is on a broker that's not the one the producer is
on), in which case everything changes and you want to forward the
VirtualTopic message but not the Consumer.*.VirtualTopic ones.

But you only want to exclude
Consumer.*.VirtualTopic.MyOneTopicThatHasDirectConsumers; if you have other
virtual topics that don't have direct consumers, you still want to allow
their consumers' subscriptions through.  And you only want to disallow
forwarding of messages on the consumer topics for those consumers that are
connected to the same broker that at least one real consumer is connected
to, or that are connected to a broker that's on the path from any producer
to any direct consumer, but you need to allow forwarding of consumer queue
messages along broker-to-broker links that aren't on the path from any
direct consumer to any producer.  And oh, by the way, it's quite possible
that direct consumers will move around the broker network dynamically but
exclusions/inclusions have to be configured statically (at startup), so
good luck getting it right in a complex, dynamic broker network.

So Dejan's guidance is correct when there is no direct consumer, and the
information on the wiki about when there is a direct consumer, though
theoretically correct, is probably impossible to implement properly in
certain network of broker configurations (which I think makes this at least
a partially-broken feature).

On Thu, May 21, 2015 at 8:44 AM, Tim Bain <tbain@alumni.duke.edu> wrote:

> Researching the question that josealvarado recently posted (
> http://activemq.2283324.n4.nabble.com/How-to-forward-a-topic-using-network-of-brokers-td4696688.html#a4696745),
> I came across some seemingly contradictory guidance about how to bridge
> virtual topics, and I'm hoping that Dejan (who authored one of the two) or
> someone else in the community can reconcile the two.
>
> The bottom of http://activemq.apache.org/virtual-destinations.html says
> not to bridge the consumer queues associated with a virtual destination, to
> avoid getting duplicate messages.  This implies that the messages should
> traverse the network of brokers on the virtual destination itself, and only
> get moved to the consumer queues when they reach the broker to which the
> consumer is attached.  (Though I'm not at all clear how things would work
> if the subscription was durable and the consumer moved to another broker
> after the message went onto the consumer queue on the original broker, but
> that's a separate question.)
>
> In his comment when he rejected https://issues.jboss.org/browse/MB-809,
> Dejan says what sounds like the opposite: that we should dynamically
> include Consumer.> (or Consumer.*.VirtualTopic.>), allowing both the
> virtual destination messages and the consumer queue messages to be
> forwarded between the brokers.
>
> Are those two statements indeed contradictory?  If not, why not?  If so,
> which one's right?
>
> Tim
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message