声明:
本文章是使用的python来操作rabbitmq
系统是Ubuntu 18.04
环境搭建
第一步:Ubuntu安装RabbitMQ
(1)由于RabbitMQ使用的是erlang编写的,所以我们需要先安装erlang
命令:sudo apt-get install erlang
(2)查看erlang版本,以确认erlang是否安装成功
命令:sudo erl 或者 erl
(3)安装必要的依赖
命令:sudo apt-get install erlang-manpages erlang-doc erlang-nox
(4)安装RabbitMQ服务
命令:sudo apt-get install rabbitmq-server
如果安装不成功就输入:
sudo apt-get install -y rabbitmq-server
(5)RabbitMQ服务的常用命令
启动服务:service rabbitmq-server start
停止服务:service rabbitmq-server stop
查看状态:service rabbitmq-server status
后台启动:service rabbitmq-server -detached
重启服务:service rabbitmq-server restart
第二步:创建Rabbitmq用户
其实rabbitmq是默认给了一个用户的,用户名/密码为guest/guest
但是这个用户毕竟不是长久之计,我们需要创建自己的用户
(1)创建新用户
命令:sudo rabbitmqctl add_user 用户名 密码
例子:sudo rabbitmqctl add_user testuser 123456
(2)设置管理员
命令:sudo rabbitmqctl set_user_tags 用户名 administrator
设置成管理员之后,用户就可以远程登陆
(3)权限设置
命令:sudo rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
第三步:安装可视化插件
rabbitmq的web可视化插件Management Plugin是一个可是动态显示rabbitmq服务状态的可视化插件,其访问地址为:
http://localhost:15672
输入你的用户名及密码即可登陆
(1)安装插件
命令:sudo rabbitma-plugins enable rabbitrmq_management
(2)重启服务
命令:service rabbitmq-server restart
(3)用户登陆
浏览器输入 http://localhost:15672进入,输入用户名及密码登陆
如果你看到了上面这个页面并成功的登陆,就说明你的环境已经搭建完成了。
接下来我们再次的验证一下
初窥RabbitMQ
(1)安装pika模块,该模块是python用来操作rabbitmq的模块
命令:pip3 install pika
我们先创建一个测试的文件夹rabbit_test
命令:mkdir rabbit_test
cd rabbit_test
touch send.py
touch receive.py
顾名思义,send.py是负责发布消息的
receive.py是负责接受处理消息的
(2)编写send.py
import pika
# 创建连接
conn = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
channel = conn.channel()
# 声明队列
channel.queue_declare(queue="hello")
# 向队列中发布消息
# exchange:交换机名字,目前用不到
# routing_key:路由键,指定队列名字
# body:消息内容
channel.basic_publish(exchange="",routing_key="hello",body="Hello World!")
print("message Hello World has been sent")
# 类似于pymsql 使用完毕之后也需要调用close()方法来关闭连接
conn.close()
(3)编写recieve.py
import pika
conn = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = conn.channel()
channel.queue_declare(queue='hello')
# 收到消息之后调用callback函数
def callback(ch,method,properties,body):
print("receive %s"%body)
# 接收到消息,进行消费
# queue:指定消息队列
# on_message_callback:接收到消息之后回调哪个函数
# auto_ack:自动消息应答机制,可以先用True跑一遍,再换成False试试看什么效果
channel.basic_consume(queue="hello",on_message_callback=callback,auto_ack=True)
print("waiting for new message")
# 开始消费(也可以理解为:开始接收消息)
channel.start_consuming()
(4)先运行send.py去发布一条消息,之后运行recieve.py接收消息。
或者先运行recieve.py再运行send.py也可以
如果你的recieve.py接收到b“Hello World!”,那么恭喜你,你的环境算是搭建成功了。