Red Hat AMQ

A lightweight, high-performance, robust messaging platform

Overview

Red Hat AMQ is a message broker for building communications among Java applications. Message-based applications are a key core capability of modern software development, and AMQ provides a solid foundation for building them. The software has numerous components to support a wide variety of applications, programming languages, databases, cloud providers and operating systems.

In order to build container-based apps, you need a messaging infrastructure to communicate among these containers. AMQ is not a single piece of software: you will work with several separate components.

AMQ Overview

  • The Broker itself, which is based on the Apache ActiveMQ Artemis project and handles the various transport and storage mechanisms for the messages. It runs on Linux and Windows. 

  • The Interconnect module, which is based on the Apache Qpid Dispatch project and routes messages among applications and protocols. It runs on Linux only. 

  • The Streams module, which is based on the Apache Kafka and Strimzi projects. It runs on Linux, macOS and Windows. It supports the publish/subscribe messaging method, better for containers. This is included in the standalone AMQ packaging.  

  • AMQ Online is based on Enmasse and is used for self-service Kubernetes messaging.

  • All of this software has a web-based management console that configures and controls all of the components from one place.

In addition to these components, AMQ also requires various clients with different language bindings and protocol support, such as C++, JavaScript, .NET, and Python. There are also Debezium Change Data Capture connectors that are used to capture row-level database changes and communicate these changes to your apps. Some of these clients are installed with the subscription manager, some use the Maven package manager (version 3.2.5 or later is recommended.)

Features

AMQ supports different message persistence methods.

These are essential tools to operate your messaging infrastructure continually, without having to worry about losing messages or during broker failures. The methods include:

  • File journaling, either using JavaNIO storage (with the caveat that you use at least Java v6) or Linux Asynchronous I/O. This latter has better performance and requires at least a Linux v2.6 kernel. AMQ Broker supports both NFS v.4 and GFS2 file systems.
  • JDBC message storage. You need to be using a relatively recent version of PostgreSQL, MySQL or Apache Derby.
  • Memory-mapped storage.

Multiple management interfaces.

AMQ has three different management tools, each has varying features:

  • Web-based console.
  • Command-line interface using Apache ActiveMQ Artemis.
  • A management API using either the Java Management Extensions or JMS APIs.

AMQ supports a wide variety of standards and protocols.

This includes Java Message Service, Secure Sockets Layer, Streaming Text Oriented Messaging Protocol and Advanced Message Queueing Protocol. Part of this support includes near-real-time, publish/subscribe and store-and-forward messaging models.