作者:真真贱贱_474 | 来源:互联网 | 2023-08-12 15:25
目录业务背景软件安装1.Erlang2.RabbitMq3.启动RabbitMq服务项目配置1.配依赖2.配参数代码使用举例总结业务背景服务器的某个功能模块,在实际
目录
- 业务背景
- 软件安装
- 1.Erlang
- 2.RabbitMq
- 3.启动RabbitMq服务
- 项目配置
- 代码使用举例
- 总结
业务背景
服务器的某个功能模块,在实际应用中会有多个用户同时访问,而每个用户需要进行的业务操作比较多,耗时较长。
若在第一个用户的操作没有完全做完时,第二个用户发起了请求,就有可能造成数据混乱的问题。
于是我们需要一个消息中间件来充当大门的作用,既要接待所有的“客人”(用户请求),又要保证每个“客人”的数据不错乱。
于是,RabbitMq凭借着自身功能强大,对待新手不友好…啊不对,是友好,友好…走入了我的视线。特此记录本次实践过程。
软件安装
这个东西之所以对新手很“友好”就是因为使用它的话,可不是仅仅导入几个依赖就能解决问题,还需要额外安装软件。减少大家走坑,资源链接
两个软件地址
1.Erlang
首先安装这个软件,因为RabbitMq是基于这个东西开发出来的…
过程简单,一路下一步即可,安装完成后,配置环境变量,例如我的是这样。
然后打开控制台,输入erl
,如果出现版本号,就代表安装完成。
2.RabbitMq
这里有大坑!!!
一定要注意版本对应!
一定要注意版本对应!
一定要注意版本对应!
比如官网的这张表,查询网址https://www.rabbitmq.com/which-erlang.html
,不对应的话使用过程会无比艰巨,各种问题直接劝退。
安装过程同样简单,一路下一步。
安装完成后打开控制台(管理员模式!!!)
,进入sbin
目录
输入rabbitmq-plugins.bat enable rabbitmq_management
,代表开启服务组件
结果如图
接下来检查一下是否启动成功。输入rabbitmqctl status
,结果会出来一些反馈,可能和我的不一样,不报错代表成功。
然后你就可以进入RabbitMq的图形化界面了。网址:http://127.0.0.1:15672/
,不理解的可以去B站看看其他中间件的教学视频、原理就能理解了。
账号密码默认:guest
,至于内部的操作以后在再学习。
3.启动RabbitMq服务
进入安装目录,双击启动。
短暂等待之后,启动成功不要把这个窗口关闭了!!
到这里,外部配置已经完成
项目配置
1.配依赖
pom文件中添加
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>
2.配参数
我使用的是yml文件配置
spring:rabbitmq:host: 127.0.0.1port: 5672username: guestpassword: guest
所有配置全部结束!!!
代码使用举例
例如我们用一个名字为demoQueue
的队列进行监听消息。
配置类
package com.carehome.app.config;import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class RabbitConfig {@Beanpublic Queue demoString() {return new Queue("demoQueue");}}
模拟用户类(即不断向服务器发请求的用户群体)
package com.carehome.app.controller;import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.text.SimpleDateFormat;
import java.util.Date;@Component
public class RabbitProducer {@Autowiredprivate AmqpTemplate rabbitTemplate;public void sendDemoQueue() {Date date = new Date();String dateString = "发送数据!!!";System.out.println("向[demoQueue] 发出消息: " + dateString);this.rabbitTemplate.convertAndSend("demoQueue", dateString);}
}
模拟接收
package com.carehome.app.controller;import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;@Component
@RabbitListener(queues = "demoQueue")
public class DemoQueueConsumer {@RabbitHandlerpublic void recieved(String msg) {System.out.println("[demoQueue] 接收到了: " + msg);}}
最后我们通过一个控制器调用这些类,模拟业务场景。
模拟控制器类
package com.carehome.app.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class RabbitMqController {@Autowiredprivate RabbitProducer rabbitProducer;@GetMapping("/sendDemoQueue")public Object sendDemoQueue() {rabbitProducer.sendDemoQueue();return "success";}
}
启动项目!!
http://localhost:8080/sendDemoQueue
,访问两下!
成功!!!
总结
尽管开始因为自己不熟悉、以及网上某些狗P不同的假教学博客,踩了不少坑,但是经过不断地试错,终于配置完成,也算是收获了很多!!!