Springboot高级(二) RabbitMQ
2021/7/20 23:11:40
本文主要是介绍Springboot高级(二) RabbitMQ,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、概述
二、Exchange(交换器)类型
目前有四种:direct、 fanout、 topic、headers
(1)direct 路由键(routing key)与队列名(name)完全一致
(2)fanout 交换器下所有队列都接收到消息
(3)topic 将路由键和某个模式进行匹配 ; #匹配0个或多个单词,*匹配一个单词
三、安装RabbitMQ
-
安装erlang,下载地址:http://www.erlang.org/downloads,双击.exe文件进行安装就好。安装完成之后将erlang的安装目录(C:\ProgramFiles\erl9.1\bin,具体请查看安装路径)加入到Path中。最后打开命令行,输入erl,如果出现erlang的版本信息就表示erlang语言环境安装成功;
-
安装RabbitMQ,下载地址:http://www.rabbitmq.com/download.html,同样双击.exe进行安装。修改RabbitMQ安装目录为 D:\SinoWeb\RabbitMQ;
-
安装RabbitMQ-Plugins
安装方法是:打开命令行cd进入rabbitmq的sbin目录(D:\SinoWeb\RabbitMQ\rabbitmq_server-3.6.12\sbin),输入一下安装命令
安装命令: rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_web_stomp rabbitmq_stomp rabbitmq_web_stomp_examples -
插件安装完之后,双击rabbitmq-server.bat,在浏览器输入http://localhost:15672进行验证,你会看到登陆界面,输入用户名:guest,密码:guest你就可以进入管理界面;
-
创建用户
使用guest账户登陆,点击Admin标签,然后点击 Add a user,在新增用户的表单中输入以下内容
Username:sino
Password:sino3210
Tags: administrator
点击Add User按钮创建用户。
创建完毕后 新创建的用户会显示No access。点击刚才创建的sino用户名,在新页面中, 点击Set permission按钮。
四、使用RabbitMQ
(1)点击Exchanges按钮
(2)点击Quene按钮
(3)点击Exchange,绑定quene
五、SpringBoot整合
1、配置文件添加属性
spring.rabbitmq.host= spring.rabbitmq.username= spring.rabbitmq.password= spring.rabbitmq.port=
2、代码
@Autowired private RabbitTemplate rabbitTemplate; @Autowired private AmqpAdmin amqpAdmin; //发送和接收信息 @Test void contextLoads() { //1、direct类型交换器,单个routingKey ----SUCCESS rabbitTemplate.convertAndSend("text.exchange", "text.quene", "我是发送到text.exchange交换器,text.quene消息队列的信息"); //2、fauout类型交换器,routingKey不传参数 -----SUCCESS rabbitTemplate.convertAndSend("text.exchange2", "", "我是发送到text.exchange2交换器,fauout消息队列的信息"); //3、fauout类型交换器,不管是否传参routingKey,都发送到交换器下所以的队列 ----ERROR rabbitTemplate.convertAndSend("text.exchange2", "text.quene", "我是发送到text.exchange2交换器,text.quene单独测试fauout消息队列的信息"); //4、direct类型交换器,routingKey不传参数,所以的队列都不接收信息 ----ERROR rabbitTemplate.convertAndSend("text.exchange", "", "我是发送到text.exchange交换器,所以队列信息"); //5、接收信息 Object convert = rabbitTemplate.receiveAndConvert("text4.quene"); System.err.println(convert); } //创建交换器和队列 @Test public void createExchange(){ //创建交换器 amqpAdmin.declareExchange(new DirectExchange("rabDirect.exchange")); amqpAdmin.declareExchange(new FanoutExchange("rabFanout.exchange")); //创建队列 amqpAdmin.declareQueue(new Queue("allen.quene", true)); //绑定队列 amqpAdmin.declareBinding(new Binding("allen.quene", Binding.DestinationType.QUEUE, "rabFanout.exchange", "allen.quene", null)); amqpAdmin.declareBinding(new Binding("allen.quene", Binding.DestinationType.QUEUE, "rabDirect.exchange", "allen.quene", null)); }
备注:当传输的消息是Map类型或实体类时,RabbitMQ接收的消息是转化乱码的,需转成json格式 添加 MyAmqpConfig 配置类
@Test void contextLoads() { Map<String, Object> map = new HashMap<>(); map.put("msg", "这是第二个消息"); map.put("data", Arrays.asList("HelloWorld", "小米", new Date())); rabbitTemplate.convertAndSend("test.direct", "five.quene", map); }
@Configuration public class MyAmqpConfig { @Bean public MessageConverter messageConverter(){ return new Jackson2JsonMessageConverter(); } }
3、使用@RabbitListener监听消息队列的内容
(1)@EnableRabbit注解开启RabbitMQ
(2)在方法上标注@RabbitListener
@EnableRabbit @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
@Service public class ReceiveService { @RabbitListener(queues = "text.quene") public void receive(String message){ System.err.println(message); System.err.println(message.getBody()); } }
这篇关于Springboot高级(二) RabbitMQ的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-04敏捷管理与看板工具:提升研发、设计、电商团队工作效率的利器
- 2025-01-04智慧养老管理工具如何重塑养老生态?
- 2025-01-04如何打造高绩效销售团队:工具与管理方法的结合
- 2025-01-04解决电商团队协作难题,在线文档工具助力高效沟通
- 2025-01-04春节超市管理工具:解锁高效运营与顾客满意度的双重密码
- 2025-01-046种主流销售预测模型:如何根据场景选用最佳方案
- 2025-01-04外贸服务透明化:增强客户信任与合作的最佳实践
- 2025-01-04重新定义电商团队协作:在线文档工具的战略作用
- 2025-01-04Easysearch Java SDK 2.0.x 使用指南(三)
- 2025-01-04百万架构师第八课:设计模式:设计模式容易混淆的几个对比|JavaGuide