OttoBus


About OttoBus

OttoBus is a messaging toolkit using the publish/subscribe paradigm rather than using network addresses: one or more clients subscribe to a subject and whenever an application publishes a message to that subject, all subscribers will receive the message.

The advantage is that only one message is sent over the network in stead of one message per client. A disadvantage is that the underlying technology uses multicasts so that routing may become an issue.

Releases

VersionDescription
0.1First public release
0.2Supports serialized Java objects
1.0Supports messages longer than 64K bytes and supports only one message format (that is: there is no backwards compatibility)

What's new?

This release adds a couple of new features:

Unfortunately, with the implementation of message fragmentation and re-assembly, another layer of complexity has been added. The current implementation works fine if all fragments arrive at the destinations, but if fragments get lost in cyberspace, there is no other recovery mechanism in place but to drop the received fragments after a timeout.

Goals

These are the current goals for the OttoBus project, unfortunately not all of them are implemented at this stage:

  1. provide an easy interface for publish/subscribe messaging
  2. provide a platform independent implementation
  3. provide a means of transportation of platform independent objects
  4. provide a streaming interface
  5. provide security mechanisms
  6. provide extensions such as garanteed delivery of messages

As of now, only the first goal and, partially, the second and third goal (all platforms supporting java should be able to use the toolkit) are reached.

As for the rest of the goals: they make a nice wish list for future versions ;-)

Why this name?

No project is complete with a catchy name and I wanted to have a name that contained at least the word BUS. So, the word Ottobus was the first thing that came to mind. In my own dialect this means something like autobus (a public means of transportation) which is not entirely unrelated to the subject handled by this toolkit: it transports messages over a public network (multicast).

A quick search on the net on the word Ottobus turned up a couple of pages written in some Scandinavian language, so it is not entirely impossible that this word is actually used as such in one or more langugaes ;-)

The project

A brief history describes how I came to start the OttoBus project and what its primary intended targets are.

The technical description page explains how the OttoBus toolkit works, as well as some known limitiations in the current implementation.

A quick explanation of the sample code that is part of the distribution may clarify how to use the OttoBus toolkit.

The remote debugging features are demonstrated by another sample program.

Where to get it

The distribution format has been changed slightly since version 0.1: there are now three compressed tar files available:

  1. ottobus-1.0-bin.jar contains the compiled classfiles
  2. ottobus-1.0-javadoc.tar.gz contains the javadoc documentation
  3. ottobus-1.0-src.tar.gz contains the java source files and the javadoc documentation

The kits contain both the Ottobus implementation and two sample applications:

Note for windows users: compressed tar files can be opened with a number of archiving tools like "WinZip" and the like.

Planned features

Now that the 64K byte limit per message has been solved, that implementation could become a bit more robust by implementing a retry mechanism. Once the fragmentation works reliably, streaming data and guaranteed delivery might be implemented.

Another feature in the pipeline is a Ruby implementation, along with support for serialized Ruby objects.

Security features are currently not (yet) in the works.

Licensing

Copyright © 2000-2001 Eddy Vanlerberghe.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. The name of Eddy Vanlerberghe shall not be used to endorse or promote
   products derived from this software without specific prior written
   permission.

THIS SOFTWARE IS PROVIDED BY EDDY VANLERBERGHE ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL EDDY VANLERBERGHE BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.


 
Sourceforge This project is hosted by SourceForge. Statistics by Webalizer 1.30

Last Update: 16 September 2001
Any Browser