提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
一、下载安装包,搭建过程
二、重要概念介绍
三、创建用户
方式一:命令行
方式二:管理后台
3.1 创建用户
3.2 分配权限
3.3 提升用户为管理员
3.4 验证
四、创建exchange和queue
五、测试验证发送和消费功能
5.1 发送消息
5.2 消费消息
5.3 从管理台进行验证
编辑
六、测试获取消息内容
总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、下载安装包,搭建过程
这篇文章里说的非常的详细了,Windows系统的直接按步骤操作,没什么难度
一文详解Windows安装配置RabbitMQ教程及RabbitMQ常用命令及解决Erlang Could not be detected.you must install Erlang before_windows rabbitmq-CSDN博客
二、重要概念介绍
Exchange(交换机)
作用:Exchange是消息的路由器。生产者将消息发送给exchange,而不是直接发送给队列。exchange根据预定义的规则(称为binding)来决定哪些消息应该路由到哪个队列
类型:Exchange有多种类型,如direct(直接交换机)、fanout(广播交换机)、topic(主题交换机)和headers(基于消息头的交换机),每种类型的exchange有不同的路由策略
配置:Exchange需要预先声明,指定其类型和任何其他相关配置
Queue(队列)
作用:Queue是消息的实际存储区域,它是消息的临时容器。队列中的消息被消费者消费,或者在队列满时被丢弃(如果配置了限制)
特性:队列可以是持久的,意味着即使RabbitMQ服务器重启,队列也会保留。队列也可以是非持久的,服务器重启后队列将消失
消费:消费者从队列中获取消息,可以是同步的(一次性获取一条消息并确认)或异步的(批量获取或流式消费)
Channel(信道)
作用:Channel是客户端和服务器之间的逻辑连接,用于发送和接收消息。它允许在单个TCP连接上创建多个独立的并行通道,提高了效率
资源管理:创建和销毁TCP连接是昂贵的操作,因此通常会复用一个TCP连接并创建多个channel来处理不同的任务
并发:在一个应用程序中,通常会为每个任务或线程创建一个单独的channel,以保持操作的隔离
三、创建用户
通常我们安装、启动RabbitMQ成功之后,系统默认用户guest/guest,该用户的权限比较大,日常使用过程中需要根据需要创建不同权限的用户
创建用户有两种方式:
方式一:命令行
这里password是你为admin用户设置的密码
rabbitmqctl add_user admin password
接下来,你需要提升用户权限,使其具有管理权限
rabbitmqctl set_user_tags admin administrator
分配vhost权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
这三个通配符参数".*"分别代表配置(conf),写(write)和读(read)权限,.*表示所有权限。
如果你想更具体地控制权限,可以将通配符替换为具体的权限字符串
方式二:管理后台
3.1 创建用户
在左侧菜单中,点击“Users”
点击右上角的“Add user”按钮
输入用户名(例如admin)和密码
点击“Add”按钮
3.2 分配权限
在用户列表中,找到刚创建的admin用户,点击它的名称
在用户详情页面,选择“Permissions”选项卡
选择要分配权限的vhost(通常是/)
在“Configure permissions”、“Write permissions”和“Read permissions”字段中,输入通配符.*来授予所有权限,或者输入特定的权限字符串
点击“Set Permissions”按钮
3.3 提升用户为管理员
返回到用户列表,再次点击admin用户
在用户详情页面,滚动到“User tags”部分
勾选“administrator”复选框
点击“Update”按钮
3.4 验证
退出当前的guest用户,然后使用新创建的admin用户和密码登录。现在,admin用户应该有权限创建exchange和其他管理操作
注意:不要试图创建amq.test这种exchange,即使你设置了权限,也会提示没有权限
四、创建exchange和queue
使用admin账户登入,然后切换到exchange,建议在管理台操作,简单快捷
然后再切换到queue
第三步,将exchange和queue绑定
至此,前期准备工作完成
五、测试验证发送和消费功能
5.1 发送消息
此处我用了一个简单的python脚本,相较springboot集成rabbitmq进行验证,有快捷简单的优点
# 导入pika库,它提供了与RabbitMQ交互的接口
import pika
# 创建一个到RabbitMQ服务器的阻塞式连接,'localhost'应替换为实际的服务器地址
connections = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
# 获取一个通道(channel),它是与RabbitMQ进行通信的实体
channel = connections.channel()
# 声明一个名为'my_direct_exchange'的exchange,类型为'direct'
# direct exchange是最基础的类型,消息会根据routing key精确匹配到queue
channel.exchange_declare(exchange='test-mq', exchange_type='direct', durable=True)
# 定义要发送的消息,这里是一个简单的字符串'Hello, World!'
message = 'Hello, world'
# 发布消息到exchange,指定exchange名称、routing key和消息体
# routing key将决定消息如何路由到queue
channel.basic_publish(exchange='test-mq', routing_key='test-queue-1', body=message)
# 关闭连接,释放资源
connections.close()
5.2 消费消息
import pikadef callback(ch, method, properties, body):# 这个回调函数会在接收到消息时被调用print(body)# 在这里处理消息,比如处理业务逻辑ch.basic_ack(delivery_tag=method.delivery_tag)connections = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connections.channel()
# 声明一个队列(如果不存在,会自动创建)
channel.queue_declare(queue='test-queue-1', durable=True)
# 定义消息消费行为
channel.basic_consume(queue='test-queue-1', on_message_callback=callback, auto_ack=False)
# 开始消费消息
channel.start_consuming()
5.3 从管理台进行验证
每隔10秒会刷新,上图列出来的是消息待消费消息总数,下图列出来的是每个时间段发送消息的数量
六、测试获取消息内容
至此,RabbitMQ的搭建及使用就完成了。
总结
在小小的公司里面,挖呀挖呀挖!