在centos上使用yum安裝rabbitmq-server
rabbitmq及其依賴環境
rabbitmq安裝之前需要安裝socat,否則直接安裝rabbitmq可能會報錯
如果沒有找到,則先安裝epel源 yum -y install epel-release
yum install socat
rabbitMQ需要和erlang的版本互相匹配具體查看rabbitMQ和對應的erlang版本匹配
在本文中,使用erlang-20.3.8.20-1.el7和rabbitmq-server-3.7.6-1.el7版本。
選擇erlang-20.3.x可以兼容新的rabbitMQ3.7.x版本
安裝erlang
使用rabbitMQ的鏡像地址:https://github.com/rabbitmq/erlang-rpm
將下面內容復制到/etc/yum.repos.d/rabbitmq_erlang.repo文件中
保存后使用yum下載安裝。
yum install erlang-版本號
版本號可以通過訪問https://packagecloud.io/rabbitmq/erlang獲取到要安裝的對應版本。
# In /etc/yum.repos.d/rabbitmq_erlang.repo [rabbitmq_erlang] name=rabbitmq_erlang baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_erlang-source] name=rabbitmq_erlang-source baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
在這里我是用版本為20.3.x這樣就可以兼容兩個mq的版本
yum install erlang-20.3.8.20-1.el7
rabbitMQ-server下載安裝
使用腳本執行生成rabbitmq_rabbitmq-server.repo文件
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
或者直接將下面內容復制到/etc/yum.repos.d/rabbitmq_rabbitmq-server.repo文件中
[rabbitmq_rabbitmq-server] name=rabbitmq_rabbitmq-server baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300 [rabbitmq_rabbitmq-server-source] name=rabbitmq_rabbitmq-server-source baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS repo_gpgcheck=1 gpgcheck=0 enabled=1 gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey sslverify=1 sslcacert=/etc/pki/tls/certs/ca-bundle.crt metadata_expire=300
yum下載安裝
默認使用yum install rabbitmq-server是安裝最新版本的rabbitmq
yum install rabbitmq-server-3.7.6-1.el7
rabbitmq安裝完后,操作使用
啟動RabbitMQ服務 #service rabbitmq-server start 狀態查看 #rabbitmqctl status 啟用插件 #rabbitmq-plugins enable rabbitmq_management 重啟服務 #service rabbitmq-server restart 添加帳號:name 密碼:passwd #rabbitmqctl add_user name passwd 賦予其administrator角色 #rabbitmqctl set_user_tags name administrator 設置權限 #rabbitmqctl set_permissions -p / name ".*" ".*" ".*"
rabbit默認的web端口號是15672
訪問http://ip:15672進入web管理頁面了
注意放通外網訪問,我的是騰訊雲服務器,需要配置安全組策略,增加外部訪問策略放通TCP:15672
測試:發消息
import pika import random credentials = pika.PlainCredentials('liruixin', 'Gaosi') connection = pika.BlockingConnection(pika.ConnectionParameters(host='39.105.98.92', port=5672, virtual_host='/', credentials=credentials)) channel = connection.channel() # 聲明一個隊列,生產者和消費者都要聲明一個相同的隊列,用來防止萬一某一方掛了,另一方能正常運行 channel.queue_declare(queue='hello') number = random.randint(1, 1000) body = 'hello world:%s' % number # 交換機; 隊列名,寫明將消息發往哪個隊列; 消息內容 # routing_key在使用匿名交換機的時候才需要指定,表示發送到哪個隊列 channel.basic_publish(exchange='', routing_key='hello', body="liruixin") print (" [x] Sent %s" % body) connection.close()
測試 收消息
import pika import random credentials = pika.PlainCredentials('liruixin', 'Gaosi') connection = pika.BlockingConnection(pika.ConnectionParameters(host='39.15.98.72', port=5672, virtual_host='/', credentials=credentials)) channel = connection.channel() # 聲明一個隊列,生產者和消費者都要聲明一個相同的隊列,用來防止萬一某一方掛了,另一方能正常運行 channel.queue_declare(queue='hello') def callback(ch, method, properties, body): print (body) # 告訴rabbitmq使用callback來接收信息 channel.basic_consume('hello',callback, True) # 開始接收信息,並進入阻塞狀態,隊列里有信息才會調用callback進行處理,按ctrl+c退出 print (' [*] Waiting for messages. To exit press CTRL+C') channel.start_consuming()