Presumo  - Java Messaging Service Implementation

Presumo Project

Project Origins

The idea that became Presumo was conceived on the around May 2000. At that time I had just finished a prototype of a product based on a particular JMS implementation. It was disappointing to find the prototype consuming an excessive amount of network bandwidth. The source of the problem was due to the prototype's reliance on a feature which was poorly designed in the JMS implementation. Specifically, the product relied on JMS' ability to filter messages based on the content. However, the JMS implementation did not apply the filter until it had reached the client. Consequently, many messages which were not needed by clients were being sent over the network only to be dropped on arrival. The problem was exacerbated by the fact that no JMS implementation at the time, and most still do not, preform server-side content filtering of messages. Management decided not to re-architect and the product was eventually shipped as a bandwidth hog.

It was amazing to find out the the JMS implementations considered the problem impossible to remedy. Time and time again it was expressed that performing content based filtering at the server would cause a CPU bottleneck. After thinking about the problem for some time, an algorithm/architecture was devised that seemed to make server side filtering possible for the most common use cases. Eager to see if the design would work, I set out to write what is now Presumo.

After many late nights and a few weekends, the project was able to pass messages fall of 2000. Every effort was made to make the system as efficient as possible, and the results were unbelievable. The core routing engine was able to process over 10,000 messages per second, while accomplishing the "impossible" task of server-side content based filtering.

The excitement was short-lived. The prototype was very fast, but it was only a prototype. Much work was needed to get the code base to a competitive solution. Furthermore, I lost motivation when faced with the daunting task of producing an quality enterprise solution by myself. After 6 months of no significant progress being made on the code base, I decided to open source the project. Another 4 or 5 months later, November 2001, the first version was released, and the Presumo project was up and running.

Sourceforge Project Page

Copyright © 2001 and 2002 Dan Greff