So nice of you to pitch in!
The Messaging Core (even it it can use a lot of refactoring and addition of new features) is not the highest priority right now. The critical part, at this moment, is the JMS facade. Once it is done, it will allow us to release an alpha, which people can download and play with.
Adrian did some early work in this area (JMS facade), but after I talked to him, we both agreed it has to be redone. This (http://www.jboss.org/wiki/Wiki.jsp?page=JBossMessagingDesign ) is his document and gives you a pretty accurate image of how we want to do it. It is Adrian's document.
Another good starting point is the EJB3 interceptor mechanism, from which I will borrow a lot. As for the communication between remote clients and server peers, I will use Tom Elrod's Remoting.
1. Take a look at the Unified Interceptors used by EJB3 (we will use them too).
2. Take a look at Tom Elord's remoting.
3. In the mean time (couple of days), I will put out nicely sized JIRA tasks for everybody to grab and chew on. So to speak :)
4. Step 3. will probably involve a refactoring ot the JMS Facade document, because I expect to learn a lot in the process (I will go through EJB3 and remoting myself)
Please send me an e-mail from your personal account, so I can reply and take the irrelevant parts of the discussion off-line.
For all of you who want to take a look at the JBossWorld Messaging presentation, I linked it under the JBoss Messaging Development page http://www.jboss.org/wiki/Wiki.jsp?page=JBossMessagingDevelopment
I've looked over the remoting stuff. Which Handler(s) do you expect to have, and how many?
Will you expose the JMS facade directly over the remoting API (i.e. use a Remoting Client to use JMS) or are the remote handlers just for JMS<->JMS communication? As in, between servers that serve JMS?
I'm guessing the latter, but I'm just checking.
Actually, above you say:
As for the communication between remote clients and server peers, I will use Tom Elrod's Remoting.
So it seems that the Remoting is just for clients wanting to use Messaging outside of the JMS API? Or will you create a JMS client as well?
Remoting is used behind the JMS API.
Your client code looks up a ConnectionFactory in JNDI and it uses it to create a Connection.
The ConectionFactory implementation (which delegates to a dynamic proxy) will use Remoting to connect to a server pair, which will create a ConnectionDelegate proxy and return it on the client. Over Remoting.
The client then will use Connection.createSession() which will also use Remoting in the background. Same for Session.createProducer() and Session.createConsumer().
So Remoting is used by the JMS Facade runtime to interact with a server peer. The server peer will accept a message and it will forward it locally to a consumer or it will forward it to another peer, over JGroups. The destination peer will forward the message to its consumer, over Remoting.