自己的win7第一次使用RabbitMQ
使用的过程中参照https://www.cnblogs.com/longlongogo/p/6489574.html所写的内容,结合自己使用过程中遇到的问题总结如下
一、环境搭建
1、由于RabbitMQ使用Erlang语言编写,所以先安装Erlang语言运行环境。我的是win764位,下载地址:http://www.erlang.org/downloads,本人下载了 OTP 19.2 Windows 64-bit Binary File,下载后直接安装就可以, 安装后手动编辑“path”加入安装路径D:\erl9.2\bin。打开 cmd ,输入 erl 后回车,如果看到如下的信息,表明安装成功
2、安装RabbitMQ服务端
下载地址:http://www.rabbitmq.com/,下载后安装,可以在cmd将cd到安装目录(..\rabbitmq_server-3.2.3\sbin)下使用命令rabbitmq-service install rabbitmq-service enable将其安装为服务
然后使用rabbitmq-service start启动服务。使用rabbitmqctl status查看启动状态
然后发现报错了Error: unable to perform an operation on node,查找资料,
- 将C:\Users\{用户名}\.erlang.cookie 复制到 C:\Windows\System32\config\systemprofile 目录。
- 重启rabbitMQ服务
然后解决了,然后使用命令
rabbitmqctl add_user JC JayChou //创建用户JC密码为JayChou rabbitmqctl set_permissions JC ".*" ".*" ".*" //赋予JC读写所有消息队列的权限 rabbitmqctl set_user_tags JC administrator //分配用户组
增加了自己的管理用户,并使用rabbitmq-plugins enable rabbitmq_management开启rabbitmq_management插件,在web界面查看和管理RabbitMQ服务
暂时就到这里了
三、创建第一个发送客户端
发送成功,运行了 两次,然后在web页看到队列有两条数据。
下面写个接收端:
四、RabbitMQ基本信息
1、RabbitMQ的基本结构
Channel:信道,仅仅创建了客户端到Broker之间的连接Connection后,客户端还是不能发送消息的。需要在Connection的基础上创建Channel,AMQP协议规定只有通过Channel才能执行AMQP的命令,一个Connection可以包含多个Channel。之所以需要Channel,是因为TCP连接的建立和释放都是十分昂贵的。
2、方法:
QueueDeclare、ExchangeDeclare、QueueBind、BasicPublish
3、RabbitMQ的四种Exchange:
fanout:把所有发送到该Exchange的消息投递到所有与它绑定的队列中。主要用于发布/订阅的一些场景,如用户注册了我们的网站后,我们通过短信和邮件两种方式通知用户。
direct:把消息投递到那些binding key与routing key完全匹配的队列中。
topic:将消息路由到binding key与routing key模式匹配的队列中。
header类型exchange不是通过routingKey进行路由的,而是通过Headers
4、消息确认
生产者端消息确认(tx机制和Confirm模式)、消费者端消息确认(自动确认和显示确认)
5、RabbitMQ的消费模式
EventingBasicConsumer、BasicGet、QueueBaicConsumer
6、Qos(服务质量)
RabbitMQ提供的Qos(服务质量)可以完美解决上边的问题,使用Qos时,Broker不会再把消息一股脑的发送给消费者,我们可以设置每次传输给消费者的消息条数n,消费者把这n条消息处理完成后,再获取n条数据进行处理,这样就不用担心消息丢失、服务端内存爆满的问题了,因为没有发送的消息状态都是Ready,所以当我们新增一个消费者时,消息也可以立即发送给新增的消费者。注意Qos只有在消费端使用显示确认时才有效,使用Qos的方式十分简单,在消费端调用 channel.BasicQos() 方法即可
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
· 重磅发布!DeepSeek 微调秘籍揭秘,一键解锁升级版全家桶,AI 玩家必备神器!