SpringBoot整合RabbitMQ消息中间件(菜鸟学习)
前言
自学多时,写一个demo做个总结
从建项目开始,比较简单的实现springboot+rabbitMQ消息中间件,一对多发送消息,供初学者参考,更快的理解rabbitMQ消息中间件
环境
win10
Idea2018.1.2x64
jdk1.8.0_131
erlang 10.1
rabbitmq_server-3.7.9
配置环境
erlang
由于rabbitmq是用erlang语言开发,所以先配置erlang环境
http://www.erlang.org/downloads
下载安装并配置环境变量,cmd显示版本号,配置成功
rabbitMQ
http://www.rabbitmq.com/download.html
需要下载安装,添加rabbitmq账号,设置账号远程访问权限,启动sbin/rabbitmq-plugins.bat
http://localhost:15672/#/
rabbitmq安装成功
创建项目
新建项目引入web和RabbitMQ依赖
https://start.spring.io/
导入idea
项目结构
RabbitConfig
创建"hello"队列(也可以创建交换机,用交换机关联队列,实现各种类型的广播)
package com.sunc.springbootrabbitmq.config; import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitConfig { @Bean public Queue queue(){ System.out.println("加载RabbitConfig..."); return new Queue("hello"); } }
controller
连续调用10次send
package com.sunc.springbootrabbitmq.controller; import com.sunc.springbootrabbitmq.send.HelloSend; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/hello") public class HelloController { @Autowired private HelloSend helloSend; @RequestMapping("/sayHello") public String sayhello(){ for (int i = 0; i < 10; i++) { helloSend.send1(i); } return "hello"; } }
send
发送消息
package com.sunc.springbootrabbitmq.send; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class HelloSend { @Autowired private AmqpTemplate amqpTemplate; public void send1(int i) { String context = i + " hello"; System.out.println("send== " + context); amqpTemplate.convertAndSend("hello", context); } }
至此其实已经可以发送消息到队列了
http://localhost:8080/hello/sayHello
管理界面已经可以看到hello队列有10条消息在了
ReceiverService
监听消息
package com.sunc.springbootrabbitmq.receiver; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Service; @Service public class ReceiverService { @RabbitListener(queues = "hello") public void rece1(String hello){ System.out.println("rece1== "+hello); } @RabbitListener(queues = "hello") public void rece2(String hello){ System.out.println("rece2== "+hello); } }
完成
启动项目
可以看到之前发送的10条消息
刷新一下浏览器
http://localhost:8080/hello/sayHello
rece1和rece2共同处理了send发送的十条消息,成功
补充
HelloReceiver1
也可以用这种方法实现监听,HelloReceiver2同理,把1改成2就行,实现二等一
package com.sunc.springbootrabbitmq.receiver; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component @RabbitListener(queues = "hello") public class HelloReceiver1 { @RabbitHandler public void hello(String hello) { System.out.println("Rece1==" + hello); } }
结果
HelloReceive
4000
r1和HelloReceiver2共同监听到这十条消息
application.properties配置文件
完全默认什么都不用写
如果RabbitMQ用了自己创建的账号,或者没有配在本地,需要改一下配置
spring.rabbitmq.host=localhost spring.rabbitmq.username=guest spring.rabbitmq.password=guest
问题
这个启动类中EnableRabbit注解,加不加都项目都好用,不太理解
package com.sunc.springbootrabbitmq; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication //@EnableRabbit public class SpringbootRabbitmqApplication { public static void main(String[] args) { SpringApplication.run(SpringbootRabbitmqApplication.class, args); } }
成功
由于理解能力有限,序列化消息,创建交换机,大广播,局部广播,点对点类型还没有完全理解,后续继续学习
如有偏颇敬请斧正,本厮邮箱:suncch@163.com
- Spring Boot 构建应用——整合消息中间件 RabbitMQ
- Spring Boot 构建应用——整合消息中间件 Kafka
- (转) RabbitMQ学习之spring整合发送异步消息
- RabbitMQ学习之spring整合发送异步消息(注解实现)
- springboot学习笔记-6 springboot整合RabbitMQ
- springboot整合rabbitmq,支持消息确认机制
- (转)RabbitMQ学习之spring整合发送异步消息(注解实现)
- SpringBoot使用RabbitMQ做消息中间件
- rabbitmq学习(五):springboot整合rabbitmq
- [RabbitMQ]15_RabbitMQ学习之spring整合发送同步消息(注解实现)
- springboot 学习之路 20 (整合RabbitMQ)
- [RabbitMQ]14_RabbitMQ学习之spring整合发送同步消息
- RabbitMQ学习之spring整合发送同步消息(注解实现)
- RabbitMQ学习(十二)之spring整合发送异步消息(注解实现)
- 以ActiveMQ为例JAVA消息中间件学习【3】——SpringBoot中使用ActiveMQ
- SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
- spring boot / cloud (九) 使用rabbitmq消息中间件
- SpringBoot整合Rabbitmq设置消息请求头
- 【推荐】springboot学习笔记-6 springboot整合RabbitMQ