CentOS7安装rabbit MQ
1、安装erlang
rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm
yum install erlang
如果已经安装可以跳过
2、下载RabbitMQ
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
3、安装RabbitMQ
yum install rabbitmq-server-3.6.6-1.el7.noarch.rpm
如果报Requires: erlang >= R16B-03,则执行yum -y install epel-release命令(安装centos的epel的扩展源)
4、启动mq服务
service rabbitmq-server start
5、查看状态
service rabbitmq-server status
6、添加配置文件
cd /etc/rabbitmq/
vi rabbitmq.config
/etc/rabbitmq/下是没有找到配置文件,我们可以自己创建这个文件
编辑内容如下:
[{rabbit, [{loopback_users, []}]}].
意思是放开外部访问权限,rabbitmq默认的用户是guest,密码也是guest
保存配置后重启服务:
service rabbitmq-server stop
service rabbitmq-server start
7、开放5672端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --reload
8、python代码测试
生产者:
import pika
username = 'guest' #指定远程rabbitmq的用户名密码
pwd = 'guest'
user_pwd = pika.PlainCredentials(username, pwd)
s_conn = pika.BlockingConnection(pika.ConnectionParameters('192.168.5.94', credentials=user_pwd))#创建连接
chan = s_conn.channel() #在连接上创建一个频道
chan.queue_declare(queue='hello') #声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
chan.basic_publish(exchange='', #交换机
routing_key='hello',#路由键,写明将消息发往哪个队列,本例是将消息发往队列hello
body='hello world')#生产者要发送的消息
print("[生产者] send 'hello world")
s_conn.close()#当生产者发送完消息后,可选择关闭连接
运行生产者
消费者
import pika
username = 'guest'#指定远程rabbitmq的用户名密码
pwd = 'guest'
user_pwd = pika.PlainCredentials(username, pwd)
s_conn = pika.BlockingConnection(pika.ConnectionParameters('192.168.5.94', credentials=user_pwd))#创建连接
chan = s_conn.channel()#在连接上创建一个频道
chan.queue_declare(queue='hello')#声明一个队列,生产者和消费者都要声明一个相同的队列,用来防止万一某一方挂了,另一方能正常运行
def callback(ch,method,properties,body): #定义一个回调函数,用来接收生产者发送的消息
print("[消费者] recv %s" % body)
chan.basic_consume(callback, #调用回调函数,从队列里取消息
queue='hello',#指定取消息的队列名
no_ack=True) #取完一条消息后,不给生产者发送确认消息,默认是False的,即 默认给rabbitmq发送一个收到消息的确认,一般默认即可
print('[消费者] waiting for msg .')
chan.start_consuming()#开始循环取消息
运行消费者
到此rabbitmq安装成功