一.简单的Rabbitmq队列通信

Rabbitmq队列 笔记

由上图可知,数据是先发给exchange交换器,exchage再发给相应队列。pika模块是python对rabbitMQ的API接口。接收端有一个回调函数,一接收到数据就调用该函数。一条消息被一个消费者接收后,该消息就从队列删除

 

二.

 1.Ubuntu安装rabbitmq-server

  由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang,执行命令:

1 sudo apt-get install erlang-nox

  安装RabbitMQ服务软件包:

1 sudo apt-get install rabbitmq-server

  启动、停止、重启、状态rabbitMq命令:

1 启动:sudo rabbitmq-server start
2 关闭: sudo rabbitmq-server stop
3 重启: sudo rabbitmq-server restart
4 查看状态:sudo rabbitmqctl status

  安装RabbitMQ监控管理插件进行RabbitMQ的管理

1 rabbitmq-plugins enable rabbitmq_management #插件rabbitmq_management启动成功后就可以通过web页面进行RabbitMQ的监控和管理

  使用rabbitmq_management插件进行监控和管理

使用firefox浏览器登录:http://localhost:15672

在登录页面使用 guest/guest用户名和密码登录RabbitMQ管理系统,在系统中可以对RabbitMQ服务进行channel,queue,用户等的管理

 

 

 2.rabbitmq 用户管理相关指令:

 1 # 新增一个用户
 2 rabbitmqctl  add_user  Username  Password
 3 
 4 # 删除一个用户
 5 rabbitmqctl  delete_user  Username
 6 
 7 # 修改用户的密码
 8 rabbitmqctl  change_password  Username  Newpassword
 9 
10 # 查看当前用户列表
11 rabbitmqctl  list_users

 

 

 3.用户权限:

  用户权限指的是用户对exchange,queue的操作权限,包括配置权限,读写权限。配置权限会影响到exchange,queue的声明和删除。读写权限影响到从queue里取消息,向exchange发送消息以及queue和exchange的绑定(bind)操作。

例如: 将queue绑定到某exchange上,需要具有queue的可写权限,以及exchange的可读权限;向exchange发送消息需要具有exchange的可写权限;从queue里取数据需要具有queue的可读权限。详细请参考官方文档中"How permissions work"部分。

相关命令为:

 1 # 设置用户权限
 2 rabbitmqctl  set_permissions  -p  VHostPath  User  ConfP  WriteP  ReadP
 3 
 4 # 查看(指定hostpath)所有用户的权限信息
 5 rabbitmqctl  list_permissions  [-p  VHostPath]
 6 
 7 # 查看指定用户的权限信息
 8 rabbitmqctl  list_user_permissions  User
 9 
10 # 清除用户的权限信息
11 rabbitmqctl  clear_permissions  [-p VHostPath]  User

 

 

 4.用户角色:

  按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。

  (1) 超级管理员(administrator)

    可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

  (2) 监控者(monitoring)

    可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

  (3) 策略制定者(policymaker)

    可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。

  (4) 普通管理者(management)

    仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

  (5) 其他

    无法登陆管理控制台,通常就是普通的生产者和消费者。

  设置用户角色命令:

1 rabbitmqctl  set_user_tags  User  Tag
2 
3 # User为用户名, Tag为角色名(对应于上面的administrator,monitoring,policymaker,management,或其他自定义名称)。
4 
5 #也可以给同一用户设置多个角色,例如:
6 
7 rabbitmqctl  set_user_tags  hncscwc  monitoring  policymaker

 

rabbitmq-用户管理,详情查看:http://www.cnblogs.com/AloneSword/p/4200051.html

 

 4.Windows环境下安装rabbitmq:

  windows下安装教程:https://jingyan.baidu.com/article/a17d5285173ce68098c8f2e5.html

 

  安装pika模块:

    python中使用rabbitmq服务,可以使用现成的类库pika、txAMQP或者py-amqplib,这里用pika

    在命令行中直接使用pip安装命令:

    

1 pip install pika

 

 

三.RabbitMQ队列基本使用步骤(python Django环境下):

 消息生产者、rabbitmq中间件、消息消费者

 1.用python语言新建并编写好send.py(消息生产者)、receive.py(消息消费者)文件

 2.远程访问rabbitmq-server端(开启rabbitmq服务端):

  1)需在rabbitmq-server端创建一个用户:sudo rabbitmqctl  add_user nan nan123

  2)设置该用户角色类型:rabbitmqctl set_user_tags nan administrator

  3)设置权限:rabbitmqctl set_permissions -p '/' nan '.' '.' '.'

  4)重启rabbitmq服务:sudo service rabbitmq-server restart

 3.执行python中send.py、receive.py文件,测试结果

send.py:

 1 #!/usr/bin/env python
 2 import pika
 3 
 4 credentials = pika.PlainCredentials("nan","nan123456") #文本格式验证
 5 connection = pika.BlockingConnection(pika.ConnectionParameters(
 6     '192.168.1.145',credentials=credentials))
 7 channel = connection.channel() # 生成管道,在管道内跑队列
 8 
 9 # 声明queue
10 channel.queue_declare(queue='hello')
11 
12 # n RabbitMQ a message can never be sent directly to the queue, it always needs to go through an exchange.
13 channel.basic_publish(exchange='',# 先把数据发给exchange交换机,再由交换机转发给对应的队列
14                       routing_key='hello', # 向'hello'队列发数据
15                       body='Hello World!' # 数据
16                       )
17 print(" [x] Sent 'Hello World!'")
18 connection.close() #关闭管道
send:

相关文章:

  • 2021-09-06
  • 2022-01-10
  • 2022-02-08
  • 2022-12-23
  • 2021-11-05
  • 2021-06-12
  • 2021-12-08
猜你喜欢
  • 2021-11-07
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-04-02
  • 2021-10-09
  • 2022-02-08
相关资源
相似解决方案