Red Hat Enterprise MRG 2

Messaging Installation and Configuration Guide

Installing and Configuring the Red Hat Enterprise Messaging Server

Edition 1

David Ryan

Joshua Wulf

Legal Notice

Copyright © 2014 Red Hat, Inc..
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack Logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.

Abstract

This guide covers the installation and configuration of the Red Hat Enterprise Messaging Server.
Preface
1. Document Conventions
1.1. Typographic Conventions
1.2. Pull-quote Conventions
1.3. Notes and Warnings
2. Getting Help and Giving Feedback
2.1. Do You Need Help?
2.2. We Need Feedback!
1. New and Updated Content
1.1. Changed for 2.3
1.2. New for 2.3
2. Messaging Components - Installation
2.1. The Messaging Server
2.1.1. The Messaging Server
2.1.2. Messaging Broker
2.1.3. Install the Messaging Server on Red Hat Enterprise Linux 5
2.1.4. Install the Messaging Server on Red Hat Enterprise Linux 6
2.1.5. Configure the Firewall for Message Broker Traffic
2.2. Memory Requirements and Limitations
2.2.1. Memory Allocation Limit (32-bit)
3. Starting the Broker
3.1. Starting the Broker via command line vs as a service
3.2. Running the Broker at the command line
3.2.1. Start the Broker at the command line
3.2.2. Stop the Broker when started at the command line
3.3. Running the Broker as a service
3.3.1. Run the Broker as a service
3.3.2. Stop the Broker service
3.3.3. Configure the Broker service to start automatically when the server is started
3.4. Run multiple Brokers on one machine
3.4.1. Running multiple Brokers
3.4.2. Start multiple Brokers
4. Broker options
4.1. Set Broker options at the command line
4.2. Set Broker options in a configuration file
4.3. Broker options
4.3.1. Options for running the Broker as a Daemon
4.3.2. General Broker options
4.3.3. Logging
4.3.4. Modules
4.3.5. Default Modules
4.3.6. Persistence Options
4.3.7. Resource Quota Options
5. Queues
5.1. Message Queue
5.2. Create and Configure Queues using qpid-config
5.3. Memory Allocation Limit (32-bit)
5.4. Exclusive Queues
5.5. Ignore Locally Published Messages
5.6. Last Value (LV) Queues
5.6.1. Last Value Queues
5.6.2. Declaring a Last Value Queue
5.7. Message Groups
5.7.1. Message Groups
5.7.2. Message Group Consumer Requirements
5.7.3. Configure a Queue for Message Groups using qpid-config
5.7.4. Default Group
5.7.5. Override the Default Group Name
5.8. Alternate Exchanges
5.8.1. Rejected and Orphaned Messages
5.8.2. Alternate Exchange
5.9. Queue Sizing
5.9.1. Controlling Queue Size
5.9.2. Enforcing Queue Size Limits via ACL
5.9.3. Queue Threshold Alerts
5.10. Deleting Queues
5.10.1. Delete a Queue with qpid-config
5.10.2. Automatically Deleted Queues
5.10.3. Queue Deletion Checks
5.11. Producer Flow Control
5.11.1. Flow Control
5.11.2. Queue Flow State
5.11.3. Broker Default Flow Thresholds
5.11.4. Disable Broker-wide Default Flow Thresholds
5.11.5. Per-Queue Flow Thresholds
6. Persistence
6.1. Persistent Messages
6.2. Durable Queues and Guaranteed Delivery
6.2.1. Configure persistence stores
6.2.2. Durable Queues
6.2.3. Create a durable queue using qpid-config
6.2.4. Cluster Durable Queues
6.2.5. Create a cluster durable queue using qpid-config
6.2.6. Mark a message as persistent
6.2.7. Durable Message State After Restart
6.3. Message Journal
6.3.1. Journal Description
6.3.2. Configuring the Journal
6.3.3. Configure the Message Journal using qpid-config
6.3.4. Determining Journal Size
7. Initial Tuning
7.1. Run the JMS Client with real-time Java
7.2. qpid-perftest
7.3. qpid-latency-test
7.4. Infiniband
7.4.1. Using Infiniband
7.4.2. Prerequisites for using Infiniband
7.4.3. Configure Infiniband on the Messaging Server
7.4.4. Configure Infiniband on a Messaging Client
8. Logging
8.1. Logging in C++
8.2. Change Broker Logging Verbosity
8.3. Tracking Object Lifecycles
9. Security
9.1. Simple Authentication and Security Layer - SASL
9.1.1. SASL - Simple Authentication and Security Layer
9.1.2. SASL Support in Windows Clients
9.1.3. SASL Mechanisms
9.1.4. SASL Mechanisms and Packages
9.1.5. Configure SASL using a Local Password File
9.1.6. Configure SASL with ACL
9.1.7. Configure Kerberos 5
9.2. Configuring TLS/SSL
9.2.1. Encryption Using SSL
9.2.2. Enable SSL on the Broker
9.2.3. Export an SSL Certificate for Clients
9.2.4. Enable SSL in C++ Clients
9.2.5. Enable SSL in Java Clients
9.2.6. Enable SSL in Python Clients
9.3. Authorization
9.3.1. Access Control List (ACL)
9.3.2. Default ACL File
9.3.3. Load an Access Control List (ACL)
9.3.4. Reloading the ACL
9.3.5. Writing an Access Control List
9.3.6. ACL Syntax
9.3.7. ACL Definition Reference
9.3.8. Enforcing Queue Size Limits via ACL
9.3.9. Resource Quota Options
9.3.10. Routing Key Wildcards
9.3.11. Routing Key Wildcard Examples
9.3.12. User Name and Domain Name Symbol Substitution
9.3.13. ACL Definition Examples
10. High Availability
10.1. Clustering
10.1.1. Messaging Clusters
10.1.2. Components of a Messaging Cluster
10.1.3. Failover behavior in clients
10.1.4. Error handling
10.1.5. Persistence
10.1.6. Configure a Cluster
10.1.7. Avoiding Race Conditions in Clusters
10.1.8. Troubleshooting
10.2. Cluster management
10.2.1. Cluster Management using qpid-cluster
10.3. Queue Replication for Disaster Recovery
10.3.1. Queue Replication
10.3.2. Configuring Queue Replication
10.3.3. Using Backup Queues in Messaging Clients
10.3.4. Queue Replication and High Availability
11. Broker Federation
11.1. Broker Federation
11.2. Broker Federation Use Cases
11.3. Broker Federation Overview
11.3.1. Message Routes
11.3.2. Queue Routes
11.3.3. Exchange Routes
11.3.4. Dynamic Exchange Routes
11.3.5. Federation Topologies
11.3.6. Federation Among High Availability Clusters
11.4. Configuring Broker Federation
11.4.1. The qpid-route Utility
11.4.2. qpid-route Syntax
11.4.3. qpid-route Options
11.4.4. Create and Delete Queue Routes
11.4.5. Create and Delete Exchange Routes
11.4.6. Delete All Routes for a Broker
11.4.7. Create and Delete Dynamic Exchange Routes
11.4.8. View Routes
11.4.9. Resilient Connections
11.4.10. View Resilient Connections
12. Qpid JCA Adapter
12.1. JCA Adapter
12.2. Qpid JCA Adapter
12.3. Install the Qpid JCA Adapter
12.4. Qpid JCA Adapter Configuration
12.4.1. Per-Application Server Configuration Information
12.4.2. JCA Adapter ra.xml Configuration
12.4.3. Transaction Support
12.4.4. Transaction Limitations
12.5. Deploying the Qpid JCA Adapter on JBoss EAP 5
12.5.1. Deploy the Qpid JCA adapter on JBoss EAP 5
12.5.2. JCA Configuration on JBoss EAP 5
12.6. Deploying the Qpid JCA Adapter on JBoss EAP 6
12.6.1. Deploy the Qpid JCA Adapter on JBoss EAP 6
12.6.2. JCA Configuration on JBoss EAP 6
13. Management Tools and Consoles
13.1. Command-line utilities
13.1.1. Command-line Management utilities
13.1.2. Changes in qpid-config and qpid-stat for MRG 2.3
13.1.3. Using qpid-config
13.1.4. Using qpid-cluster
13.1.5. Using qpid-tool
13.1.6. Using qpid-queue-stats
A. Exchange and Queue Declaration Arguments
A.1. Exchange and Queue Argument Reference
B. OpenSSL Certificate Reference
B.1. Reference of Certificates
C. Revision History