View on GitHub

FFMQ

Light-weight & fast JMS message queuer

What is FFMQ ?

FFMQ is a full-java, light-weight, fast JMS 1.1 queuer implementation.

Emphasis is put on raw performance and reliability.
As a consequence it does not provide a lot of features but it is small, fast, easy to configure and has reduced dependencies.

License

FFMQ is released under the GNU LGPL v3 license in order to be used both as a standalone application and/or embedded in all kind of software.

Features

Note : both branches contain the same functionality but have different java runtime dependencies.

Limits

The following required JMS operations are not implemented :

JMSXGroupID / JMSXGroupSeq message properties

The following optional JMS operations are not implemented :

ConnectionConsumers and DurableConnectionConsumers
Session MessageListener
XAConnections

Other limitations :

Performance

FFMQ is fast, real fast.

Anyway, you should never trust any written performance claim. The best way to have an exact idea is to test it by yourself ! Please give it a try, if you have a JMS compliant application or benchmark this should be pretty easy (See 'Quick Start' below).

Architecture

To get a technical insight on FFMQ inner workings you may want to have a look at the Technical Overview page.

Maven distribution

FFMQ is also available on Maven Central. You can install it in your application using the following Maven dependency:

Branch 4.x
<dependency>
  <groupId>net.timewalker.ffmq</groupId>
  <artifactId>ffmq4-core</artifactId>
  <version>4.0.0</version>
</dependency>
Branch 3.x
<dependency>
  <groupId>net.timewalker.ffmq</groupId>
  <artifactId>ffmq3-core</artifactId>
  <version>3.0.7</version>
</dependency>

Quick Start

Just unzip the server distribution package somewhere and start the server using the ffmq-server.bat or ffmq-server.sh shell in the bin/ directory. (If necessary you can change default listen ports and interfaces in the conf/ffmq-server.properties file)

On the client-side, you need the ffmq-core.jar in your classpath. (plus commons-logging and log4j if you don't already have them). Here is the default JNDI configuration to use :

Naming Context Factory : net.timewalker.ffmqX.jndi.FFMQInitialContextFactory
Connection Factory JNDI Name : factory/ConnectionFactory
Provider URL : tcp://<hostname>:10002

FAQ

If you are in trouble, please have a look at the frequently asked questions.

Complete Documentation

For the complete FFMQ documentation, see here.

Bug reports / Contact

If you find any bug or problem, you can send me an email to : ffmq@timewalker.net

If you use FFMQ (successfully or not), I would be glad to hear from you. Tell me what you like or dislike about this piece of software.