SpringAMQP
AMQP
即Advanced Message Queuing Protocol,是一个提供统一消息服务的应用层标准高级消息队列协议。它作为应用层协议的一个开放标准,专为面向消息的中间件设计。基于AMQP协议的客户端与消息中间件可以传递消息,且这种传递不受客户端/中间件不同产品、不同开发语言等条件的限制。
- 异步处理:允许消息发送者与接收者通过队列进行异步处理,发送者将消息发送到队列,接收者可以在方便的时候从队列中取出消息进行处理,实现异步通信。
- 消息路由:支持多种消息路由方式,如点对点、发布/订阅、内容分发网络等,可根据不同需求选择路由方式。
- 安全传输:通过SSL/TLS等安全协议保证消息在传输过程中的安全性。
- 可靠性保证:在消息传输过程中,即使发生网络故障或服务器故障,AMQP协议也能保证消息不会丢失或重复发送。
- 高效率:采用高效的二进制编码协议,有效减少消息的传输大小,提高传输效率。
- 中立性:作为一个中立的规范,不受特定语言或平台的影响,可以支持多种编程语言和平台。
SpringAMQP
SpringAMQP是基于AMQP协议的消息队列框架,它是Spring框架提供的一个用于简化Spring应用程序对消息队列使用的工具。它减少了对AMQP协议的细节处理,提供了一个高级别的抽象,使得生产者和消费者可以用简单的方式与消息队列进行通信。
SpringAMQP定义了一套API规范,可以说是AMQP的一种实现,它提供了模板来发送和接收消息。在SpringAMQP中,可以配置和使用各种消息队列服务,如RabbitMQ等,实现消息的发布、订阅、路由等功能。
通过使用SpringAMQP,开发者可以更专注于业务逻辑的实现,而无需过多关注底层消息队列的实现细节,从而提高开发效率和应用的可靠性。
因为Rabbit的APi配置十分的繁琐,SpringAMQP为我们提供了很多API可以直接声明队列,交换机
consumer为接收消息模块
publicsher为发送模块
入门案例发送消息给队列 SpringAMQP
- 引入AMQP依赖
- 配置yaml
- 编写java代码
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置文件
spring:
rabbitmq:
host: 192.168.88.135 # 服务器地址
port: 5672 # 发送和接收的连接端口
username: itcast # 配置RabbitMQ数据卷的用户名
password: 123321 # 配置的密码
virtual-host: / # 虚拟目录
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestQueue {
@Autowired
// 引入模板
private RabbitTemplate rabbitTemplate;
@Test
public void testSend2SmileQueue(){
String queueName = "simple.queue"; // 队列名
String message = "Hello,world and SpringAMQP!!!"; // 发送的消息
rabbitTemplate.convertAndSend(queueName,message);
}
}
接收消息
- 引入依赖
- 配置rabbit地址
- 编写java代码
前面两步与发送步骤一样,直接拷贝到对应模块即可
java中编写只需要指定监听哪个队列即可
@Component
public class TestConfigQueue {
// 指定队列
@RabbitListener(queues = "simple.queue")
public void getMessage(String msg){
System.out.println("监听到的消息:--->"+msg);
}
}
编写好直接启动类 即可 开始监听在这里插入图片描述