Chris-

Separate queues is a good approach. Additionally, it doesn't sound like you need to do a network of brokers here. Stand-alone brokers and a simple Camel route running inside the producer broker could handle the content-based router requirement where you want messages sent to a particular broker.

You'd have an ActiveMQ connection configured for each broker, the route would read from your "publish queue", then read value from a header to route to the appropriate broker based on that value.

Camel links:
ActiveMQ connector: http://camel.apache.org/activemq.html
Content-based router: http://camel.apache.org/content-based-router.html

Hope this helps,
Matt Pavlovich

On 1/27/12 2:54 PM, Chris Robison wrote:
Let me describe my scenario and hopefully my question will become clear. We
have 3 main data centers. In each of these data centers we host a web
portal that allows customers to access resources hosted either in one of
our 3 data centers or in a special edge install hosted in the customer's
data center. We have a special case where we need to enumerate the
resources available to a particular customer at all sites (all our data
centers and customer edge sites) and to do that, the enumerating service at
a particular site must be given the username and password of the user. Not
ideal, but it is a limitation of the software we are integrating with. What
we've decided to do is put an AMQ broker at each edge install that will
connect back to a broker at one of our data centers and become part of the
network of brokers. Our web portals will then send messages through the
broker network that contain the user's credentials that enumerating
services can then respond to. What we absolutely don't want is for messages
to end up on brokers/consumers they don't belong on even if a
broker/consumer wants to receive messages for a certain criteria it
shouldn't be asking for. So now for my question(s):

    - Originally we were thinking that we'd use one queue and then the
    message producers could set a custom header in the message that allows the
    consumers to use selectors to select message pertinent to them. Is there a
    way to filter messages based on a message header value so that, for
    example, a broker/consumer at an edge site cannot select/receive messages
    it shouldn't? Or would it be better to have a queue per site and do
    security based on that?
    - Any other tips for me that might make this easier?

Reply via email to