On 23 February 2010 22:03, Eibwen <gwal...@sedonatek.com> wrote:
>
> I'm completely new to message queues, i've been looking at the ActiveMQ and
> Camel website all day but the concepts are not fully clicking for my
> specific situation.
> I've read most of the FAQs but i think i'm still not seeing how everything
> will fit together.  I'd love a link to something to help me understand the
> protocol some more.
>
> Specifications:
> Messages will be fairly low rate, I'd estimate at peak times 1 a minute
> Messages will be fairly large, i'll say average 500kB, up to around 2mB
> Messages are a combination of an xml document with a byte stream probably
> encoded into that
> Right now a single Producer, and 10-20 Locations, in the future 100+
> Locations, and a limited number of Producers
>
>
> The Producer is being built by someone else
> The Locations are C# and behind a firewall where they can connect out, but i
> cannot connect in
>
>
> Many terms are confusing me still
> I don't really understand the virtual destinations

don't worry about those - they are only really for very advanced use cases.


> and such
> When a queue is "foo.bar" is that a subset of "foo" ?

They are different; but you can use wildcards if you want to use a
parent/child relationship on consumers.

http://activemq.apache.org/wildcards.html


> Questions (see image below):
> 1. Is there any difference in the connection between Topic and Queue?

the network connection (a JMS Connection) is shared across all
destinations & sessions & producers & consumers created via it (its a
JMS thing).

To see how queues and topics compare
http://activemq.apache.org/how-does-a-queue-compare-to-a-topic.html


> a. Is it a persistent connection or will I code my client to connect into
> the broker every 5 minutes to check if the queue has anything?

A connection (e.g. a JMS Connection) is intended to be created on
startup and kept open. ActiveMQ supports auto-reconnection if there is
a network or broker failure
http://activemq.apache.org/how-can-i-support-auto-reconnection.html


> b. Or does the broker connect into the client when a message is put into a
> queue? (if this is the case my custom filtering/queue piece would have
> webservices the clients will connect to)

clients connect to the broker.


> 2. To filter/distribute the messages, would either of these be worse?:
> a. asking the producer to put each location's messages in a different queue
> b. Or have selectors on each Location pointing to the same queue?
> c. Or have the producer put it into a single queue, and have forwardTo
> filteredDestination split it into different queues?
> d. Is filtering using an XPath on the xml message body horribly inefficient?

it all kinda depends on the numbers of queues & message throughputs
involved; its also easy to pick one of those and change over time if
you feel the need.

As a first approach I'd go with a) if you're less than say 5,000
locations as then you can more easily monitor how each location is
performing.


> 3. If i want to do these things, would ActiveMQ be able to accomplish
> these/would Camel?
> a. Put a copy of each message into a database for indefinite storage

ActiveMQ uses a message store (there are various versions from JDBC to
custom database on disk). If you want to put a copy in a database
permanently, I'd use Camel or some custom persistence code etc.


> b. Add in new Producers sending messages from other common languages (giving
> this portal out to new customers that will send information down to our
> Locations)
>
> 4. If I were to start with ActiveMQ, would i be able to switch to Camel
> fairly easily in the future?

Yes

> Or at least without having to ask the
> developers of the Producer to change their code?

Camel could work off the messages on the queue/topics - irrespective
of how they are produced. So no need to change producer code.

-- 
James
-------
http://macstrac.blogspot.com/

Open Source Integration
http://fusesource.com/

Reply via email to