RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。 所有主要的编程语言均有与代理接口通讯的客户端库。
MAC安装rabbitmq:
代码语言:javascript复制 brew install rabbitmq
代码语言:javascript复制 cd /usr/local/Cellar/rabbitmq/
cd 3.8.1/
启用rabbitmq management插件
代码语言:javascript复制 sudo sbin/rabbitmq-plugins enable rabbitmq_management
然后
代码语言:javascript复制sudo vi /etc/profile
打开该文件。 加上下面的两行。 (保存不了就用文本工具打开)
代码语言:javascript复制export RABBIT_HOME=/usr/local/Cellar/rabbitmq/3.8.1
export PATH=$PATH:$RABBIT_HOME/sbin
配置环境变量后,立即生效
代码语言:javascript复制source /etc/profile
最后:
代码语言:javascript复制后台启动
sudo rabbitmq-server -detached
查看状态
sudo rabbitmqctl status
浏览器内输入 http://localhost:15672,默认的用户名密码都是guest,登录后可以在Admin那一列菜单内添加自己的用户
sudo rabbitmqctl stop 关闭
安装完成
浏览器打开: http://localhost:15672 默认的账号密码是 : 账号: guest 密码: guest
添加一个管理用户:
点击Admin,add a user 输入用户名密码,重复密码,输入 tags,点击 add user
然后点击之前添加的用户: 设置权限,如下即可。
管理界面
python 简单连接代码:
先 pip install pika 。 pika用来连接mq。
代码语言:javascript复制''' 生产一条消息 '''
import pika
import time
credentials = pika.PlainCredentials('spider', 'spider') # 你创建的账号和密码
parameters = pika.ConnectionParameters(host="localhost",
credentials=credentials)
connection = pika.BlockingConnection(parameters) # 连接 RabbitMQ
channel = connection.channel() # 创建频道
queue = channel.queue_declare(queue='hello') # 声明或创建队列
message = time.strftime('%H:%M:%S', time.localtime())
channel.basic_publish(exchange='',
routing_key='hello',
body=message)
print('send message: %s' % message)
connection.close()
代码语言:javascript复制''' 消费 '''
import pika
# 接收处理消息的回调函数 # 回调函数get消息体
def ConsumerCallback (channel, method, properties, body):
print("Received %s" % body)
credentials = pika.PlainCredentials('spider', 'spider')
parameters = pika.ConnectionParameters(host="localhost",credentials=credentials)
connection = pika.BlockingConnection(parameters) # 连接 RabbitMQ
channel = connection.channel() # 创建频道
queue = channel.queue_declare(queue='hello') # 声明或创建队列
channel.basic_consume(queue='hello',on_message_callback=ConsumerCallback,auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL C')
channel.start_consuming() # 创建死循环,监听消息队列,可使用CTRL C结束监听