开发者学堂课程【SpringBoot 实战教程: SpringBoot 整合 RabbitMQ】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/651/detail/10817
SpringBoot 整合 RabbitMQ
1、在 springboot 中如何集合 rabbitmq。rabbitmq 和 ActiveMQ 一样都是消息管理的相应的服务器软件。做相应架包的依赖,以下是 springboot 提供的对应的依赖。创建好工程,直接加入依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
对应的是 amqp 的依赖
</dependency>
2、在 resoures下创建全局配置文件,application.properties。
全局配置,就是要链接的 rabbitmq 所在服务器的IP地址和端口号,相应的用户名和密码
spring.application.name=sbrabbitmq
spring.rabbitmq.addresses=192.168.25.129:5672
在 liunx 服务器上,这是相应 IP 地址,端口号是5672
spring.rabbitmq.username=admin
用户名
spring.rabbitmq.password=admin
密码
spring.rabbitmq.publisher-confirms=true
3、写一个消息的发送包,mysender。
创建相应的对象,需要加注解,springboot 在启动时进行默认的配置,它会创建一个 rabbitTemplate 模版,就可以使用模版进行消息发送
发消息:
@Component
Public
class
my
Sender{
@Autowired
Private
AmqpTemplate
rabbitTemplate;
Public
void
send(){
{
rabbitTemplate.convertAndSend("hel",
‘’
你好
!!!
‘’
);
用这个方法实现消息的发送,第一个参数是消息要发送到哪个队列中,第二个是发送一个文本消息。队列在 rabbitmq 中已经创建好,在 queues 中实现创建好一个名字为 hel 的队列,这个消息就发送到队列中,这是消息发送的实现,直接借助模版就可以实现。
4、写一个消息的接收方,MyReceiver。
收消息:
@Component
Public
class
my
Receiver{
@RabbitHandler
@RabbitListener(queues="hel")
不知道什么时候消息过来,所以接收方要进行消息的监听,通过注解进行监听,指明队列名称即可,发消息是 hel,收消息要和它对应上
Public
void
receive
(String
text){
当有消息过来时,text 参数就可以直接接收到消息,这是文本消息,所以用字符串类型进行接收
System.out.println("收到消息:"+text);
把接收到的消息进行输出
}
}
这就是用 Rabbitmq 如何发消息和收消息,在收消息这一方是如何实现监听的,用注解进行实现。
5、在启动类中进行每个包的扫描,扫描 com.qianfeng 的子包
@SpringBootApplication( scanBasePackages="com.qianfeng")
6、写一个 controller,TestController。
实现消息的发送,接收方已经做了监听,所以它会收到,在这实现消息的发送方,发送方叫 mysender。
package com. qi anfeng. controller;
import org . spring framework. stereotype . Controller;
@Controller
public class TestController
{
@Autowired
private
MySender
mySender ;
@RequestMapping ('‘
/
send’‘
)
访问路径
@ResponseBody
public String test ()
{
mySender send ( )
;
只需要调用 mysender 发送方 send 的方法执行消息的发送
Return‘’ok‘’
返回字符串 ok
}
7、调用 send 中的方法,发送消息,消息的内容是你好。
Public void send()
{
rabbitTemplate. convertAndSend( "he
l‘’
,
‘’
你好!!!");
}
收到之后,它会打印到控制台。
@RabbitHandler
@RabbitListener (queues="hel")
public void
receive (String text)
{
System. out println("收到消息: "+text) ;
}
8、启动,controller 的路径是 send,localhost:8080/send
,执行。在浏览器上得到的是 ok。
控制台也收到消息,这就说明这个消息发送成功,并且被接收者接收到了。这就是 springboot 中如何集成 rabbitmq。