Checklist: Build Java AMQP Clients Using Kaazing Gateway

This checklist provides the steps necessary to enable your Java application to communicate with any AMQP-compliant message broker, such as Apache Qpid, using the Kaazing Java Client SDK available at

# Step Topic or Reference
1 Learn about supported browsers, operating systems, and platform versions. Release Notes
2 Learn about the Kaazing AMQP Java client. Overview of the Kaazing Gateway Java AMQP Client Libraries
3 Learn to use the Kaazing Java AMQP client library and the supported methods. Use the Kaazing Gateway Java AMQP Client Library
4 Learn how to authenticate your client by implementing a challenge handler to respond to authentication challenges from the Gateway. Secure Your Java AMQP Client

Note: Java Developer Kit (JDK) or Java Runtime Environment (JRE) 1.6 and above is required.

Overview of AMQP 0-9-1

Advanced Message Queuing Protocol (AMQP) is an open standard for messaging middleware that was originally designed by the financial services industry to provide an interoperable protocol for managing the flow of enterprise messages. To guarantee messaging interoperability, AMQP 0-9-1 defines both a wire-level protocol and a model—the AMQP Model—of messaging capabilities.

The AMQP Model defines three main components:

  1. Exchange: clients publish messages to an exchange
  2. Queue: clients read messages from a queue
  3. Binding: a mapping from an exchange to a queue

An AMQP client connects to an AMQP broker and opens a channel. Once the channel is established, the client can send messages to an exchange and receive messages from a queue.

For more information about AMQP, visit

WebSocket and AMQP

WebSocket enables direct communication from the browser to an AMQP broker. Kaazing Gateway radically simplifies Web application design by providing the AMQP client libraries for the Java, JavaScript, and .NET client technologies. Web developers can code directly against the back-end AMQP broker without the need for custom Servlets or server-side programming.

Using the AMQP client libraries, you can take advantage of the AMQP features, making the browser a first-class citizen in AMQP systems (similar to C, Java, Python, and other clients). This means that you can run AMQP clients directly in a browser.

The Kaazing AMQP libraries support binary because AMQP messages use a binary format. As such, applications developed using the AMQP libraries are provided with guaranteed persistence, reliability, and message-receipt acknowledgment all the way to the browser.

Overview of the Kaazing Gateway Java AMQP Client Libraries

The Kaazing AMQP Java Client SDK allows clients to subscribe from and publish messages to a message broker using AMQP. With the Kaazing AMQP client libraries, you can leverage WebSocket in your application. This WebSocket client then enables communication over AMQP between your application and the message broker, as shown in the following figure:

Figure: Kaazing Gateway Java AMQP Client Connection

Starting an AMQP Broker

There are a wide variety of AMQP brokers available that implement different AMQP versions. For example, RabbitMQ, Apache Qpid, OpenAMQ, Red Hat Enterprise MRG, ØMQ, and Zyre. If you do not have an AMQP broker installed yet, you can use the Apache Qpid AMQP broker included in the Gateway download package. Apache Qpid supports AMQP version 0-9-1.

To set up and start the Apache Qpid broker on your system, perform the steps described in Setting Up the Gateway and Clients.

Note: The AMQP client libraries are compatible with AMQP version 0-9-1. Refer your AMQP broker documentation for information about certified AMQP versions.

For information on integrating with RabbitMQ, see Integrate RabbitMQ Messaging.

Taking a Look at the AMQP Tutorial

Before you start, take a look at a demonstration that was built with the Java version of the AMQP client library. To see this demo in action, perform the following steps:

  1. Download or clone the Kaazing AMQP Java tutorial from Github at
  2. Follow the steps for the AMQP tutorial in the repo README at