Introduction

Overview

SwiftMQ is a standalone enterprise messaging system and completely implements the publish/subscribe as well as the point-to-point message model of the JMS 1.1 specification and version 1.0 and 0.9.1 of the AMQP specification.

Software Architecture

The SwiftMQ design resembles to a "hub-and-spoke" formulation with central message routers as "hubs" and clients as "spokes".

SwiftMQ is based on a microkernel architecture. The main controller of this kernel is called Swiftlet Manager. Components of SwiftMQ are called Swiftlets(TM).

The Swiftlet Manager knows a group of Swiftlets which are building the kernel. The Kernel Swiftlets are building the base functionality of a SwiftMQ router. There are a number of Kernel Swiftlet Replacements contained in the distribution that provide different/extended functionality, like LDAP Authentication etc.

Extension Swiftlets, also contained in the distribution, are providing optional functionality for hot plug-in into a router, like JavaMail Bridge, SNMP Management etc. They can be hot deployed without stopping a router.

Federated Router Network

SwiftMQ is designed entirely as a federated router network, whereby the router network represents a single router to the JMS client.

Every SwiftMQ router possesses a build-in routing engine to administer any incoming or outgoing routing connection of various configuration.

Routes are exchanged dynamically; no complicated configurations are necessary. As soon as a router establishes a connection to another router, all routers are available, the ones which are connected directly as well as all the routers reachable by this router. No direct peering is necessary between the participating routers.

The routing engine routes the messages destination-based, by finding the shortest way. To balance a load or to increase the message throughput, round-robin scheduling can be selected. In this case, the messages are distributed to all routes of a destination evenly.

The exchange of messages between routers is made with XA transactions (2-phase-commit) and automatic revovery through the SwiftMQ transaction manager. Due to configurable XA transaction and window sizes, SwiftMQ is able to generate an XA troughput of multiple thousands of message per second on routing connections.

In the case of a router failure and consequently a dropped route, the next best route is chosen. If there is no existing route to a destination, the messages stay at the respective router until a route is activated again (store-and-forward).

Because of these mechanisms, SwiftMQ guarantees a high-grade fail-safety as well as a once-and-only-once message delivery beyond the router networks.