SwiftMQ requires Java 11 or later.

The Streams Swiftlet requires a JavaScript scripting engine which is part of the JDK up to Java 14 (Nashorn scripting engine). From Java 15 onwards the Nashorn scripting engine has been removed from the JDK. SwiftMQ detects that during startup and disables the Streams Swiftlet automatically. So, all functionality provided from this Swiftlet like the message scheduler will be unavailable.

To use Java 15 or later with Streams Swiftlet, you need to run SwiftMQ with GraalVM CE which is a next-generation polyglot JVM, based on the standard OpenJDK and provided by Oracle. SwiftMQ has been highly optimized for GraalVM and we recommend using it instead of the standard OpenJDK.

GraalVM CE is free and can be obtained from If you use GraalVM 22.2.0 or later, you need to install the JavaScript engine separately:

$JAVA_HOME/bin/gu install js

Installing GraalVM with the install script

Since 12.5.0

The install script is located in the scripts folder of the distribution and can be used to automatically install the latest tested GraalVM used from this router only.

Using a Web Proxy

Before you invoke it, check whether your host uses a web proxy. In that case, you need to set environment variables (the values are examples) before you invoke the script.

Unix / MacOS:

export proxyhost=
export proxyport=9080

Windows (PowerShell):


Windows (Terminal CMD.EXE):

set proxyhost=
set proxyport=9080

Invoking the install script

Invoke the script with

./install [-d]

If you specify -d, a prior installation of GraalVM will be removed before install.

The script downloads GraalVM and installs Graal.js to execute SwiftMQ Streams. On MacOS you will be asked to enter the sudo password to remove the quarantine attributes.

Installation from an Archive

Distribution Content

After you have unpacked the archive, you will find the following directory structure below the distribution's top-level directory:




Self signed TLS certificates and server/client key stores.


All dynamic data of the router like configuration, logs, persistent store


jar files


jar files and config meta data of all Kernel Swiftlets


Extension Swiftlets JMS, AMQP, JavaMail Bridges and Replicator and Kernel Swiftlet replacements Authentication JDBC and Store JDBC.


SwiftMQ samples


Shell scripts to start the router and cli


SwiftMQ system streams

Using a Web Proxy

Since 12.5.0

SwiftMQ normally does not connect to the outside world, except for routing connections. However, if you are using SwiftMQ Streams (or Flow Director flows) on that router which opens REST connections via http/s, you need to set the web proxy as shown here.

Starting the Router

Go to the scripts directory and start the router as follows:

    ./router [<preconfig>]

If you are starting it under Windows and use preconfig files, please set it in quotes!

Running SwiftMQ UR as Docker Container

Difference to SwiftMQ CE

The only difference to SwiftMQ CE is that SwiftMQ UR is not available in the Docker registry but must be downloaded as a tar.gz archive. Instead of the docker pull command use

docker load < <tar.gz archive>

Then reference the Docker image as

swiftmq-ur:<version> (without iitsoftware/), i.e. swiftmq-ur:12.1.0

in your docker or docker-compose.yml.

SwiftMQ UR deploys all available Extension Swiftlets during the first startup. You need to stop and start the Docker container to apply preconfig files for Extension Swiftlets after the initial deployment.

For further information on SwiftMQ on Docker have a look at the SwiftMQ CE installation.

Standard Configuration

The standard configuration of SwiftMQ UR is identical with SwiftMQ CE.

Starting CLI

To start CLI, SwiftMQ's command-line interface, perform a


from the scripts directory. As username/password press the return key (anonymous) or use admin, password secret.


SwiftMQ UR contains the same examples as SwiftMQ CE but adds those for Filetransfer over JMS.