A very small messaging server that uses the lightweight MQTT publish/subscribe protocol to distribute messages between applications.
News: RSMB has now been Open sourced into the Eclipse Mosquitto project http://projects.eclipse.org/projects/technology.mosquitto
Really%20Small%20Message%20Broker

What is Really Small Message Broker?
Really Small Message Broker (aka RSMB) is a small server that uses MQ Telemetry Transport (MQTT) (Version 3 and 3.1) for lightweight, low-overhead messaging. It enables messaging to and from tiny devices such as sensors and actuators over networks that might have low bandwidth, high cost, and varying reliability. "Publishers" send messages to the broker, which then distributes the messages to the "subscribers" who have requested to receive those messages.
RSMB has a "bridge" that enables connections to other MQTT-capable servers; this bridge allows messages to be passed between RSMB instances as well as to other MQTT servers such as WebSphere MQ. RSMB can run in embedded systems in order to provide a messaging infrastructure in remote installations and pervasive environments. Given Really Small Message Broker's low memory requirements, it can help extend the reach of the MQTT messaging infrastructure to the smallest components.
Really Small Message Broker makes it easy to connect brokers together into a messaging infrastructure (either peer-to-peer or hierarchically). It's easy configuration and low resource requirements provide great flexibility in messaging solutions for embedded environments.
How does it work?
RSMB is a small program that sends and receives data in the form of messages to and from applications and devices over TCP/IP network connections. Data from a variety of sources (including other applications, other brokers, and sensors and meters that measure their physical environment) is published to the broker. The broker then sends a copy of that data to applications that have registered their interest in that data by subscribing to it.
Really Small Message Broker takes up only 80 KB of storage space and can be run in only 200 KB or fewer of memory (actual figures vary), making it ideal for installing and running on small servers and embedded devices, such as the Linksys NSLU2 or other low powered servers. This low resource use is possible because the broker was written in C and has a simple internal design and simple external features. The package contains binary executables for Windows and Linux, as well as documentation.
An MQTT client for C is included. MQTT clients for Java and C are also available for download in the WebSphere MQ SupportPacs IA92 and IA93. The Java client in IA92 contains a useful MQTT Exerciser GUI sample. You can also write your own clients using theMQTT specification.
About the technology author(s)
Ian Craggs is a software engineer at the IBM United Kingdom development laboratory at Hursley, near Winchester.
Platform requirements
Operating systems:
- Linux for Intel 32-bit, kernel 2.6.8 or above
- Linux for Intel 64-bit, kernel 2.6.8 or above
- Linux on IBM System z
- Linux for ARM XScale, kernel 2.0.0 or above (Crossbow Stargate or Eurotech Viper)
- Windows XP
- Apple Mac OS X Leopard
- Unslung (Linksys NSLU2)
Installation instructions
- Download the zip file.
- Extract the zip file to a location on your computer (for example, C:\Program Files\broker or /home/laura/broker).
- On Windows, install Microsoft Visual C++ 2008 Redistributable Package, if it is not already installed.
Starting the broker on Windows: In the folder where you installed the broker, select the windows folder and double-click broker.exe.
Starting the broker on Linux:
- In a terminal, change to the directory where you installed the broker (for example: cd /home/laura/broker).
- Change to the appropriate directory for your platform. For example, on Ubuntu, to linux_ia32.
- Enter the appropriate command for your platform. For example, on Ubuntu, type the following:
./broker
Or, in order to run the broker in the background so that it will continue to run when you log out of the session, enter the following command:
nohup ./broker >> /dev/null &