RabbitMQ Website Documentation

repository·main·Indexed 22 days ago

https://github.com/rabbitmq/rabbitmq-website

Documentation and resources from the RabbitMQ website, including HTML manpages, guides on managing plugins via rabbitmq-plugins, AMQP URI connection strings, and Java client threading. It covers specific version updates for RabbitMQ 2.7.0, 2.7.1, 2.8.6, and 3.0, including the MQTT Adapter plugin, mirror queue policies, cluster joining with rabbitmqctl join_cluster, and message/queue TTL configurations.

Tokens
232.4K
Snippets
528
Records
1.1K
Agent score
78%

What's inside rabbitmq-website

  1. Overview of RabbitMQ Monitoring

    main

    Monitoring RabbitMQ involves capturing system behavior via health checks and metrics over time to detect anomalies, perform root cause analysis, and plan capacity.

    Recommended monitoring approaches include:

    • Prometheus and Grafana: The highly recommended option for production clusters. It uses the rabbitmq_prometheus plugin for low-overhead metric scraping.
    • Kubernetes Operator monitoring: For clusters deployed via the RabbitMQ Kubernetes Operator, the Prometheus plugin is automatically enabled.
    • Management Plugin: Useful for development environments via its HTTP API, but has higher overhead and limited data retention compared to Prometheus.
    • CLI Observer: An interactive tool for focused troubleshooting.

    Monitoring is categorized into:

    • RabbitMQ Metrics: Node, queue, connection, and cluster-wide metrics reported by RabbitMQ.
    • Infrastructure/Kernel Metrics: CPU, memory, disk I/O, and network metrics reported by the OS.
  2. Overview of RabbitMQ Kubernetes Operators

    main

    The RabbitMQ team maintains two distinct Kubernetes operators to manage RabbitMQ on Kubernetes:

    1. RabbitMQ Cluster Kubernetes Operator: Automates the provisioning, management, and continuous operations (scaling, rolling upgrades, monitoring) of RabbitMQ clusters. It supports both single-node and multi-node deployments.
    2. RabbitMQ Messaging Topology Operator: Manages messaging topology objects (such as virtual hosts, users, and queues) within a cluster that was previously deployed using the Cluster Operator. It allows managing these objects via the Kubernetes declarative API.

    Note: The Messaging Topology Operator depends on the credentials provided by the Cluster Operator.

  3. Overview of RabbitMQ CLI tools

    main

    RabbitMQ provides several command-line tools for different operational scenarios. Most core tools ship with the RabbitMQ server and are located in the sbin directory of the installation root.

    Standard CLI Tools

    • rabbitmqctl: Service management and general operator tasks (e.g., user/vhost management, cluster membership).
    • rabbitmq-diagnostics: Monitoring and health checking; supports both online and offline modes.
    • rabbitmq-plugins: Managing plugins (listing, enabling, disabling); supports both online and offline modes.
    • rabbitmq-queues: Maintenance tasks for replicated queues (e.g., quorum queues).
    • rabbitmq-streams: Maintenance tasks for streams.
    • rabbitmq-upgrade: Pre-upgrade, upgrade, and post-upgrade operations.

    Note for Windows users: Tool names end with .bat (e.g., rabbitmqctl.bat).

    Additional Tools

    • rabbitmqadmin: An optional standalone tool for operator tasks via the HTTP API. It is distributed via GitHub releases and requires the HTTP API port to be open.
  4. Overview of rabbitmqadmin v2 capabilities

    main

    rabbitmqadmin v2 is a command-line tool that interacts with the RabbitMQ HTTP API. It is a standalone project and is not a replacement for rabbitmqctl or rabbitmq-plugins, as the HTTP API does not expose all operations available to those tools.

    Supported operations include:

    • Listing and managing objects (virtual hosts, users, queues, streams, permissions, policies, etc.)
    • Accessing cluster and node metrics
    • Running health checks
    • Listing feature flag state and deprecated features
    • Exporting, transforming, and importing definitions
    • Managing shovels, federation upstreams, and links
    • Closing connections
    • Rebalancing queue leaders across cluster nodes
  5. Supported MQTT features and versions

    main

    RabbitMQ supports MQTT versions 3.1, 3.1.1, and 5.0 via the MQTT plugin.

    Key supported features include:

    • QoS 0 (at most once) and QoS 1 (at least once) publish & subscribe
    • TLS and OAuth 2.0
    • Clean and non-clean sessions
    • Message Expiry Interval
    • Subscription Identifier and Subscription Options
    • Will messages (including Will Delay Interval)
    • Request / Response (with interoperability for AMQP 0.9.1 and AMQP 1.0)
    • Topic Alias
    • Retained messages
    • MQTT over WebSocket (via the RabbitMQ Web MQTT Plugin)
  6. Supported AMQP 1.0 Client Libraries for RabbitMQ 4.0+

    main

    The RabbitMQ team maintains a set of AMQP 1.0 client libraries optimized for RabbitMQ 4.0 or more. While RabbitMQ is compatible with any AMQP 1.0-compliant client, using these official libraries is strongly encouraged for the best experience. These libraries provide a simple, safe, and powerful API for publishing, consuming, and managing server topology across multiple languages.

    Supported languages and their respective repositories:

  7. Explore RabbitMQ-Raft and Erlang-Distribution Dashboards

    main

    In addition to the Overview dashboard, two specialized Grafana dashboards are available for deeper inspection:

    1. RabbitMQ-Raft: Visualizes metrics related to the Raft consensus algorithm (used by Quorum Queues).
    2. Erlang-Distribution: Visualizes runtime metrics such as the state of inter-node communication links (buffers, etc.).

    These dashboards are part of the same workload ecosystem and can be tested using the manifests found in the rabbitmq_prometheus/docker directory.

  8. Management Plugin Overview and Capabilities

    main

    The RabbitMQ management plugin provides an HTTP-based API and a browser-based UI for managing and monitoring RabbitMQ nodes and clusters. It also includes the rabbitmqadmin command-line tool.

    Core Capabilities:

    • Topology Management: Declare, list, and delete exchanges, queues, bindings, users, virtual hosts, and user permissions.
    • Monitoring: Track queue length, message rates (global and per-queue/exchange/channel), resource usage, node GC activity, and client connection data rates.
    • Node Resource Monitoring: Monitor sockets, file descriptors, memory usage breakdown, disk space, and inter-node bandwidth.
    • Administrative Tasks: Manage users, policies, and runtime parameters; force close client connections; and purge queues.
    • Message Testing: Send and receive messages directly from the UI (useful for development and troubleshooting).
    • Schema Management: Export and import schemas (vhosts, users, permissions, queues, exchanges, bindings, parameters, policies) for recovery or automation.
  9. Troubleshooting RabbitMQ: Overview of available guides

    main

    RabbitMQ provides several specialized guides for troubleshooting different layers of the system:

    • Monitoring & Health: Using metrics and health checks to detect anomalies.
    • Logging: Locating log files, adjusting log levels, and detecting connection lifecycle events.
    • Configuration: Verifying node configuration using rabbitmqctl and rabbitmq-diagnostics.
    • Connectivity: Troubleshooting networking, client connectivity, and TLS/SSL issues.
    • Security: Troubleshooting client authentication, authorization, LDAP, and OAuth 2.0.
    • Resource Usage: Analyzing node memory usage, connection leaks, and channel leaks.
    • Cluster & Runtime: Troubleshooting cluster formation and analyzing Erlang runtime crash dumps.
    • Traffic Analysis: Using tcpdump or Wireshark to capture network traffic for debugging connectivity or protocol behavior.
  10. Performance improvements in RabbitMQ 3.12

    main

    RabbitMQ 3.12 includes several key performance optimizations:

    • Classic Queues: Lazy mode is now the default behavior. CQv2 is highly recommended for higher throughput and lower memory usage.
    • MQTT Plugin: A complete rework provides significant memory savings per connection and supports millions of connections per node.
    • Quorum Queues: Improved efficiency, specifically addressing the throughput degradation previously seen as queue length increased.
    • Node Lifecycle: Faster stop and start times for nodes containing large numbers of classic queues (tens of thousands+).
  11. TLS Support for RabbitMQ Protocols

    main

    TLS can be enabled for all protocols supported by RabbitMQ. While this guide focuses on AMQP 1.0 and AMQP 0-9-1, TLS is also applicable to:

    • RabbitMQ Stream Protocol
    • MQTT
    • STOMP
    • MQTT-over-WebSockets
    • STOMP-over-WebSockets
    • HTTP API (via HTTPS)
    • Inter-node and CLI tool traffic (for clustering)

    For specific configuration examples for non-AMQP protocols, refer to their respective protocol guides.

  12. Use rabbitmqadmin v2 to interact with the HTTP API

    main

    The rabbitmqadmin v2 is a command-line tool designed to interact with the RabbitMQ HTTP API. It allows users to manage RabbitMQ resources (like queues, exchanges, and users) directly from the terminal.

    To explore the available commands and their specific options, use the help command or the --help flag.