Skip to main content

RabbitMQ

Concept

Exchange: direct, fanout, topic, headers.

Default is direct.

Default virtual host is \.

Compatibility

RabbitMQErlang
3.13.726.2.x
3.12.425.0~26.0
3.11.2025.0~25.3.x

Install

Repository

Ubuntu 24.04 / RabbitMQ 3.13.x

sudo apt-get install curl gnupg apt-transport-https -y

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main

## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
EOF

dpkg -l | grep erlang
supported_erlang_version="1:26.2.5.13-1"
sudo apt-get install -y erlang-base=$supported_erlang_version \
erlang-asn1=$supported_erlang_version \
erlang-crypto=$supported_erlang_version \
erlang-eldap=$supported_erlang_version \
erlang-ftp=$supported_erlang_version \
erlang-inets=$supported_erlang_version \
erlang-mnesia=$supported_erlang_version \
erlang-os-mon=$supported_erlang_version \
erlang-parsetools=$supported_erlang_version \
erlang-public-key=$supported_erlang_version \
erlang-runtime-tools=$supported_erlang_version \
erlang-snmp=$supported_erlang_version \
erlang-ssl=$supported_erlang_version \
erlang-syntax-tools=$supported_erlang_version \
erlang-tftp=$supported_erlang_version \
erlang-tools=$supported_erlang_version \
erlang-xmerl=$supported_erlang_version \
--allow-downgrades
sudo apt-get install rabbitmq-server -y --fix-missing

# Remove 4.x
sudo systemctl stop rabbitmq-server
sudo apt-get purge -y rabbitmq-server

sudo rm -rf /var/lib/rabbitmq/
sudo rm -rf /etc/rabbitmq/

target_rabbitmq_version="3.13.7-1"
sudo apt-get install -y --allow-downgrades rabbitmq-server=$target_rabbitmq_version

# Lock version
sudo apt-mark hold rabbitmq-server

sudo apt-mark hold erlang-base erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key erlang-runtime-tools erlang-snmp erlang-ssl erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

Ubuntu 22.04, cherry servers

# Install all necessary packages
sudo apt-get install curl gnupg apt-transport-https -y

## ppa1.novemberain.com, ppa2.novemberain.com expired

## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null

# Repository listing
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main

# another mirror for redundancy
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main

## Provides RabbitMQ
##
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main

# another mirror for redundancy
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF

# Update package indices
sudo apt-get update -y

# Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

# Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing

Plugins

# To check the list of all available RabbitMQ plugins
rabbitmq-plugins list

# Enable RabbitMQ Management Dashboard
## The management dashboard allows interaction with the processes and control activities on the server. Access the page by through http://your_IP:15672.
sudo rabbitmq-plugins enable rabbitmq_management

Upgrade

Upgrade from RabbitMQ 3.11->3.12, show error:

classic_mirrored_queue_version: required feature flag not enabled! It must be enabled before upgrading RabbitMQ

# Before upgrade
rabbitmqctl enable_feature_flag all

# Cluster running the command on the main node is enough
kubectl exec -it rabbitmq-0 -- rabbitmqctl enable_feature_flag all

Maintain

# Check erlang version
erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell

# Check status of the RabbitMQ service.
sudo systemctl status rabbitmq-server

# Check rabbitmq version
sudo rabbitmqctl version # 3.12.4

# List feature flags
sudo rabbitmqctl list_feature_flags

# Default user guest can only log in via localhost. Create an administrator account to access the dashboard. Make sure you modify the SecurePassword to your own password.
sudo rabbitmqctl add_user admin Passw0rd
sudo rabbitmqctl set_user_tags admin administrator

# Delete user
sudo rabbitmqctl delete_user guest

# List users
sudo rabbitmqctl list_users

# Add a new virtual host
sudo rabbitmqctl add_vhost /

# Delete virtual host
sudo rabbitmqctl delete_vhost /

# List all available Virtual Hosts
sudo rabbitmqctl list_vhosts

# Assign User Permissions on a Virtual Host
sudo rabbitmqctl set_permissions -p {virtual_host} {user_name} {permissions}

# Full permissions, for resource names
## read: queue
## write: exchange
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

# List permissions
sudo rabbitmqctl list_permissions -p /

Trouble Shooting

## ppa1.novemberain.com, ppa2.novemberain.com expired
sudo rm -f /etc/apt/sources.list.d/rabbitmq*.list

curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null

## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main

## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
EOF


# Detail of startup
journalctl -xe -u rabbitmq-server