Presumo  - Java Messaging Service Implementation

Presumo Project


Here is a list of features that still need to be completed in the Presumo project. Please post a message to the mailing list if you are interested in implementing any of the tasks.

  • Implement persistent message recovery mechanism

    Messages are currently being persisted, but the mechanism to recover messages in the event of a server crash has not been implemented yet.

    This is not as hard as it might sound since the persistent queue (written by Rob Cauble) already handles the transactional details of writing messages to disk, including correctly recovering. Presumo needs logic to simply check for pre-existing queues and restablish the state of the system (as stored in the queues) before the crash.


    • Design recovery mechanism
    • Implement recovery mechanism
    • Automated test case to exercise persistent messages

  • Point-to-point and Durable Subscriptions

    Presumo will always emphasize a non-durable pub/sub implementation that does not require any centralized controller. Point-to-point and Durable Subscriptions requires a centralized point of control some place in the JMS cloud. To push the design point, Presumo will implement point-to-point and durable subscriptions using non-durable publish/subscribe.

    A lot of work has already been done on this, but if somebody wants to take up the task it would be very helpful.


    • Document design
    • Implement design
    • Automated test for the features

  • Lightweight client

    A lightweight client with a minimal amount of functionality would be beneficial to applications which must maintain a small footprint.

    The simple design should extend itself to being ported to various languages.

    • Design language independent lightweight client
    • Java 1.1.x version
    • C++ version?
    • .Net version?

  • Improve scalability of a single server

    The scalability of a single server needs to be increased greatly by decreasing the amount of threads needed per connection.

    • Utilize Java 1.4 non-blocking I/O feature on the server.
    • Make Presumo Sessions use a thread pool (each session currently uses one thread, and each client is represented by a "RemoteSession" on the server). Already completed by Dan Greff

Sourceforge Project Page

Copyright © 2001 and 2002 Dan Greff