JBoss Messaging and Google Summer of Code
JBoss Messaging is looking for Google Summer of Code applications!
Here are some suggestions for individual projects:
Design and implement a fair(er) and efficient message priority algorithm.
JBoss Messaging queues can contain messages of different priorities from 0 (the lowest priority) to 9 (the highest priority). When delivering messages to consumers JBoss Messaging will attempt to deliver higher priority messages before lower priority messages.
The current implementation simply delivers any higher priority messages before any lower priority ones. This can result in starvation (i.e. they are never delivered) of lower priority messages if higher priority messages continue to arrive.
The goal of this project is to design a fairer algorithm which still attempts to deliver higher priority messages first but does not completely starve lower priority messages. The algorithm also needs to be extremely efficient so as not to provide any significant performance overhead on the message delivery process.
By definition a message priority algorithm cannot be completely "fair" but it should certainly be "fairer" than it is now!
Design and implement an efficient hierarchical topic routing policy.
JBoss Messaging 2.0 will provide "topic hierarchies" functionality. In normal JMS you can route a message to a topic (which basically is just a simple name) and many subscribers can subscribe to this topic and consume messages - this is "publish subscribe" messaging.
The concept of a simple name topic can be extended to provide "wild card" routing (aka "topic hierarchies"). For instance, the consumer can create a subscriber that subscribes to topic names "uk.newsfeeds.". In this case the subscriber would receive all messages sent to any topics that start with "uk.newsfeeds", e.g. "uk.newsfeeds.sport", "uk.newsfeeds.politics" etc.
The purpose of this project is to design an algorithm that can efficiently compute the set of queues that a particular message needs to be routed to. Message routing needs to be extremely fast so it unlikely that text parsing can be done at run-time.
The difficulty in this task is in devising a structure that can provide the wildcard routing functionality without major performance hits on the routing process.