在 CentOS 上使用 RabbitMQ 的完整步骤
一 环境准备与安装
sudo yum install -y epel-release yum-utilssudo yum install -y erlang socatsudo rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.ascsudo yum-config-manager --add-repo https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/rabbitmq-server.reposudo yum install -y rabbitmq-serversudo yum localinstall -y erlang-*.rpm,再 sudo yum localinstall -y rabbitmq-server-*.rpm二 启动与基础配置
sudo systemctl start rabbitmq-serversudo systemctl enable rabbitmq-serversudo systemctl status rabbitmq-serversudo rabbitmq-plugins enable rabbitmq_managementhttp://<服务器IP>:15672sudo rabbitmqctl add_user admin StrongPass!sudo rabbitmqctl set_user_tags admin administratorsudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"三 防火墙与端口放行
sudo firewall-cmd --permanent --add-port=5672/tcp # AMQPsudo firewall-cmd --permanent --add-port=15672/tcp # 管理控制台sudo firewall-cmd --permanent --add-port=25672/tcp # 节点间 CLI/集群通信1883/8883(MQTT)、61613/61614(STOMP)、15674/15675(WS STOMP/MQTT)sudo firewall-cmd --reload四 基本使用与测试
sudo rabbitmqctl add_vhost /myvhostsudo rabbitmqctl declare queue name=myqueue durable=truesudo rabbitmqctl declare exchange name=myex type=direct durable=truesudo rabbitmqctl bind_queue destination=myqueue source=myex routing_key=mykeysudo rabbitmqctl list_queuessudo rabbitmqadmin list queuessudo rabbitmqadmin publish routing_key=myqueue payload="Hello, RabbitMQ!"sudo rabbitmqadmin get queue=myqueue requeue=falsepip3 install pika):
import pika
conn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
ch = conn.channel()
ch.queue_declare(queue='test_queue', durable=True)
ch.basic_publish(
exchange='', routing_key='test_queue',
body='Hello, RabbitMQ!',
properties=pika.BasicProperties(delivery_mode=2) # 持久化
)
print("Sent 'Hello, RabbitMQ!'")
conn.close()
import pika
conn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
ch = conn.channel()
ch.queue_declare(queue='test_queue', durable=True)
def cb(ch, method, properties, body):
print(f"Received {body.decode()}")
ch.basic_consume(queue='test_queue', on_message_callback=cb, auto_ack=True)
print('[*] Waiting for messages...')
ch.start_consuming()
python3 producer.py 与 python3 consumer.py 测试收发。五 常见问题与进阶
sudo systemctl status rabbitmq-server 与 sudo journalctl -u rabbitmq-server -fsudo rabbitmqctl export_definitions /path/backup.json、sudo rabbitmqctl import_definitions /path/backup.json