当前位置:   article > 正文

rabbbitmq讲解_ra'bii't'm'qrabiitmq

ra'bii't'm'qrabiitmq

初识

RabbitMQ是消息队列的一种。与它相类似的还有RocketMQ、kafka、ZeroMQ等。本质上是一个队列,因其存放的是消息,所以叫做消息队列(MessageQueue简称MQ),常用来实现不同服务server,进程process,线程thread之间通信,常于celery配合使用。我的学习之路《关于原理、属性概念、系统架构、场景考量》

RabbitMQ架构图

注:描述错误,①中的"正常队列"此处应该称为"死信队列"
在这里插入图片描述
可以看到①与②是相同的,可以理解的是,死信队列也是一个普通队列,只是为了实现某个特定功能,我们将其称为死信队列。

一、win安装&配置

1.1、安装包

名称 类型 版本(切记版本不能乱搭配,否则启动失败)
Erlang 编程语言 20.3
RabbbitMQ 软件 3.7.4

在这里插入图片描述

在这里插入图片描述

1.2、环境配置

1.2.1、 配置erlang系统环境变量

在这里插入图片描述

1.2.2、查看rabbbbitmq状态.../sbin/rabbbitmqctl status,我的程序出错了,步骤往下走即可解决

在这里插入图片描述

1.2.3、复制C:\Windows\System32\config\systemprofile\.erlang.cookie文件并粘贴到C:\Users\1\ .erlang.cooki

1.2.4、配置RabbbitMQ插件

.../sbin/rabbitmq-plugins enable rabbitmq_management
.../sbin/rabbitmqctl start_app
  • 1
  • 2

在这里插入图片描述

1.2.5、此时再次查询状态.../sbin/rabbbitmqctl status

在这里插入图片描述

1.2.6、RabbbitMQ启动.../sbin/rabbitmq-server.bat或者window服务页进行启动

1.2.7、地址访问http://localhost:15672

默认账户guest,默认密码guest,注意此账户只能使用localhost登录,而不能通过ip访问,如果需要ip访问,一般需要新建管理员账户

二、linux安装&配置

三、命令操作(仅用户)

3.1、查看用户列表rabbitmqctl list_users

在这里插入图片描述

3.2、新增用户

# 账户名test,密码test
rabbitmqctl add_user test test
  • 1
  • 2

3.3、赋予用户test管理员权限

rabbitmqctl set_user_tags test administrator

3.4、赋予用户test具有/vhost1这个virtual host中所有资源的配置、写、读权限

rabbitmqctl set_permissions -p "/" test ".*" ".*" ".*"

3.5、删除test用户

rabbitmqctl delete_user test

3.6、其它命令

命令名称 命令行代码 描述
查看版本信息 rabbitmqctl status 管道符 findstr rabbit win用关键字findstr,linux用关键字grep
查看队列列表 rabbitmqctl list_queues

四、demo模板(exchange类型为Simple)

4.1、生产者

import pika

# 声明一个socket 实例
connect = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
# 声明一个管道
channel = connect.channel()
# 声明queue名称为test
channel.queue_declare(queue="test", durable=True)  # 队列持久化

# RabbitMQ的消息永远不会被直接发送到队列中,它总是需要经过一次交换
channel.basic_publish(exchange='',
                      routing_key="test",
                      body="hello word".getBytes(),
                      properties=pika.BasicProperties(delivery_mode=2, ))  # 消息持久化

print("Sent 'hello world'")

connect.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

4.2、消费者

import pika
import time

# 声明socket实例
connect = pika.BlockingConnection(pika.ConnectionParameters("localhost"))
# 声明一个管道  虽然在之前的produce代码中声明过一次管道,
# 但是在不知道produce中的管道是否运行之前(如果未运行,consumers中也不声明的话就会报错),
# 在consumers中也声明一次是一种正确的做法
channel = connect.channel()

# 声明queue
channel.queue_declare(queue="test", durable=True)


# 回调函数
def callback(ch, method, properites, body):
    time.sleep(30)
    print("-----", ch, method
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/1018240
推荐阅读
相关标签
  

闽ICP备14008679号