Posted on 2008-11-18 02:58:00.0 by Tim Fox
[ View original post ]
It's normally a bit random when I get the time to do a blog entry, but I'd thought I'd try and make them a bit more frequent, to keep you up to date with what's going on.
Firstly, Clebert last week was in Monterrey, Mexico, along with Mark Little to speak at this
conference. Apparently, quite an academic conference but lots of good interest in what we're doing with JBM. Well done Clebert for delivering a great presentation :)
Both Andy and Jeff are making good progress with a variety of different tasks, including implementing an HTTP transport for Trustin Lee's Netty, completing the management API amongst other things.
Howard is coming up to speed fast with the JBM 1.4 branch, and will soon be ready to manage most of the stuff there himself.
JBM 2.0 progress: Session replication is finished and I have moved on to message routing between nodes. This is actually turning into a sexy piece of work and I think it's going to be a killer feature.
With simple, clear, XML configuration, you can define message flows between any JBM 2.0 nodes in your cluster. Either in your local LAN or across WANs, or the internet to define an arbitrarily complex network topology of nodes routing messages between them according to your chosen criteria.
Here are some examples of message flows you'll be able to express in the configuration:
"when a persistent message arrives on this server and is addressed to any address beginning with "jmsqueues.*", please route it round-robin style to any of the following nodes: .., ..,"
"when a non-persistent message arrives on this server and is addressed to any address beginning with "jmstopics.*", please route it to ALL of the following nodes: .., ..,"
"when a non-persistent message arrives on this server and is addressed to any address beginning with "jmstopics.*", please route it to ALL of the following nodes discovered using UDP discovery on port xyz"
"when a message arrives on this server, and has a property "office-name" = "London", route it over the internet using HTTP to the server at address abc, if the connection is down, store it locally and forward it on when the connection comes back up".
The routing rules can be based on any combination of
1) Message properties
2) Message size
3) Address (that can use wildcards)
4) Distribution policy (round-robin or fan out to all)
Where appropriate "store and forward" queues are used for reliability. A "store and forward" queue stores the message locally until it's receipt is acknowledged from the sendee.
In other cases where you don't want/need store and forward queues you can choose to use UDP multicast to route the message across the LAN.
So you can see that the message flows generalise the concept of "bridges" and clustering rules into one simple, intuitive , easy to configure concept. The user will be able to set up arbitrarily complex routings to satisfy their application topology, or just use the out of the box defaults for a straightforward simple LAN clustering.
Note that the "routing" I'm describing here is primarily aimed to create a clustered messaging fabric across the enterprise that provides load-balancing and high availability for queues. For more complex routing, transformation, integration points with other systems and a host of other features, you really need JBoss ESB working on top of JBoss Messaging.
The out of the box routing configuration with JBM 2.0 will come with a set of pre-configured flows that provide the implementation of "distributed queues" (and in the JMS world distributed topics).
Now, I am working madly to get as much of this finished before Christmas, when my first child is due :) So I think there are going to be just a few distractions ;)