一、rabbitmq简介、安装

简介:

MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。

RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现的产品,遵循Mozilla Public License开源协议,RabbitMQ是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由、缓存、持久化消息。“生产者”也即message发送者以下简称P,相对应的“消费者”乃message接收者以下简称C,message通过queue由P到C,queue存在于RabbitMQ,可存储尽可能多的message,多个P可向同一queue发送message,多个C可从同一个queue接收messag。

 

 

安装(linux)

1、安装erlang
以root身份执行下面命令
 
yum install erlang xmlto
 
2、安装epel源
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
wget -O /etc/yum.repos.d/epel-erlang.repo http://repos.fedorapeople.org/repos/peter/erlang/epel-erlang.repo
 
3、安装rabbitmq rpm包
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.1.5/rabbitmq-server-3.1.5-1.noarch.rpm     
rpm -ivh  rabbitmq-server-3.1.5-1.noarch.rpm
 
4、启动rabbitmq,并验证启动情况 
rabbitmq-server --detached &ps aux |grep rabbitmq
 
5、以服务的方式启动
service rabbitmq-server start
 
6、检查端口5672是否打开
/sbin/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart     
/etc/init.d/iptables status
 
7、启用维护插件
rabbitmq-plugins enable rabbitmq_management 
 
8、重启rabbitmq
service rabbitmq-server restart
 
9、登录
http://192.168.110.60:15672/ 用户名密码 guest
 
无法登陆解决办法
vim /etc/rabbitmq/rabbitmq.config
写入信息,并保存
[{rabbit, [{loopback_users, []}]}].
 
 
 其他相关:
 
1、服务器启动与关闭
启动:service rabbitmq-server start
关闭:service rabbitmq-server stop
重启:service rabbitmq-server restart
 
2、用户管理
新增 rabbitmqctl add_user admin admin
删除 rabbitmqctl delete_user admin
修改 rabbitmqctl change_password admin admin123
 
用户列表 rabbitmqctl  list_users
设置角色 rabbitmqctl set_user_tags admin administrator monitoring policymaker management
 
设置用户权限 rabbitmqctl  set_permissions  -p  VHostPath  admin  ConfP  WriteP  ReadP
查询所有权限 rabbitmqctl  list_permissions  [-p  VHostPath]
指定用户权限 rabbitmqctl  list_user_permissions  admin
清除用户权限 rabbitmqctl  clear_permissions  [-p VHostPath]  admin
 
tips:
设置远程用户密码
创建一个admin用户:rabbitmqctl add_user admin 1234qwer
设置该用户为administrator角色:rabbitmqctl set_user_tags admin administrator
设置权限:rabbitmqctl set_permissions -p '/' admin '.' '.' '.'
重启rabbitmq服务: service rabbitmq-server restart
 
二、rabbitmq python API
 详细的api请查看rabbitmq官网:http://www.rabbitmq.com/devtools.html
安装:pip install pika
1.简单的消费者生产者模型
python 与rabbitmq
生产者:
#!/usr/bin/env python3
#_*_ coding:utf-8 _*_
#Author:wd
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
    host='10.0.0.241',port=5672)) #创建连接
channel = connection.channel()#建立管道


channel.queue_declare(queue='hello')#声明queue

# n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
channel.basic_publish(exchange='',
                      routing_key='hello',
                      body='Hello World!')
print(" Sent 'Hello World!'")
connection.close()
product

消费者:

#!/usr/bin/env python3
#_*_ coding:utf-8 _*_
#Author:wd
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
    host='10.0.0.241',port=5672))#建立连接
channel = connection.channel()#建立管道

channel.queue_declare(queue='hello')#声明从那个管道接受消息


def callback(ch, method, properties, body):#回调函数,收到消息后执行的函数,body指消息主题
    print(" [x] Received %r" % body)


channel.basic_consume(callback,
                      queue='hello',
                      no_ack=True) #如果设置no_ack=Flase,会把消费的消息重写添加到队列中

print(' [*] Waiting for messages.')
channel.start_consuming()#阻塞模式
consumer

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
  • 2021-10-07
  • 2022-01-17
猜你喜欢
  • 2021-06-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2021-11-11
  • 2021-06-20
  • 2022-12-23
相关资源
相似解决方案