在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()
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()