0


本机搭建RabbitMQ

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

提示:以下是本篇文章正文内容,下面案例可供参考

一、下载安装包,搭建过程

这篇文章里说的非常的详细了,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 pika

def 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的搭建及使用就完成了。


总结

在小小的公司里面,挖呀挖呀挖!

标签: rabbitmq 分布式

本文转载自: https://blog.csdn.net/ql_gome/article/details/138908032
版权归原作者 计科6班 所有, 如有侵权,请联系我们删除。

“本机搭建RabbitMQ”的评论:

还没有评论