SpringBoot-RabbitMQ01-入门介绍

简介: AMQP (Advanced Message Queuing Protocol ,高级消息队列协议)是 个线路层的协议规范,而不是 API 规范(例如 JMS )。由于 AMQP 是一个线路层协议规范,因此它天然就是跨平台的,就像 SMTP HTTP 等协议 样,只要开发者按照规范的格式发送数据,任何平台都可以通过 AMQP进行消息交互。像目前流行的 StormMQ RabbitMQ 等都实现了 AMQP.————————————————版权声明:本文为CSDN博主「波波烤鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://bl



 前面给大家介绍过了ActiveMQ,本文开始给大家介绍下另一个消息中间件RabbitMQ。

RabbitMQ安装(Linux环境)

RabbitMQ

AMQP 简介

 AMQP (Advanced Message Queuing Protocol ,高级消息队列协议)是 个线路层的协议规范,而不是 API 规范(例如 JMS )。由于 AMQP 是一个线路层协议规范,因此它天然就是跨平台的,就像 SMTP HTTP 等协议 样,只要开发者按照规范的格式发送数据,任何平台都可以通过 AMQP进行消息交互。像目前流行的 StormMQ RabbitMQ 等都实现了 AMQP.

RabbitMQ简介

 RabbitMQ 一个实现了 AMQP 的开源消息中间件,使用高性能的 Erlang 编写。 RabbitMQ有可靠性、支持多种协议、高可用、支持消息集群以及多语言客户端等特点,在分布式系统中存储转发消息,具有不错的性能表现。

为什么要使用 RabbitMQ?他解决了什么问题?

 现在的市面上有很多MQ可以选择,比如ActiveMQ、ZeroMQ、Appche Qpid,那问题来了为什么要选择RabbitMQ?

   除了Qpid,RabbitMQ是唯一一个实现了AMQP标准的消息服务器;

   可靠性,RabbitMQ的持久化支持,保证了消息的稳定性;

   高并发,RabbitMQ使用了Erlang开发语言,Erlang是为电话交换机开发的语言,天生自带高并发光环,和高可用特性;

   集群部署简单,正是应为Erlang使得RabbitMQ集群部署变的超级简单;

   社区活跃度高,根据网上资料来看,RabbitMQ也是首选;

image.png

image.png

image.png

image.png

image.png

消息队列基础知识。

1 Provider

  消息生产者,就是投递消息的程序。

2 Consumer

  消息消费者,就是接受消息的程序。

3 没有使用消息队列时消息传递方式

image.png

4 使用消息队列后消息传递方式

image.png

5 什么是队列?

  队列就像存放了商品的仓库或者商店,是生产商品的工厂和购买商品的用户之间的中转站

6 队列里存储了什么?

  在 rabbitMQ 中,信息流从你的应用程序出发,来到 Rabbitmq 的队列,所有信息可以只存储在一个队列中。队列可以存储很多信息,因为它基本上是一个无限制的缓冲区,前提是你的机器有足够的存储空间。

7 队列和应用程序的关系?

  多个生产者可以将消息发送到同一个队列中,多个消息者也可以只从同一个队列接收数据。

入门案例

1.创建项目

 创建一个SpringBoot项目,并添加如下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
</dependencies>

2.配置

 在application.properties中添加RabbitMQ相关的配置

spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.88.150
spring.rabbitmq.port=5672
spring.rabbitmq.username=dpb
spring.rabbitmq.password=123
# 队列名称
mq.queue.name=hello-queue

3.编写代码

目录结构

image.png

创建消息队列

/**
 * @program: springcloud-rabbitmq-demo
 * @description: 创建消息队列
 * @author: 波波烤鸭
 * @create: 2019-05-21 23:18
 */
@Configuration
public class QueueConfig {
    @Value("${mq.queue.name}")
    private String queueName;
    @Bean
    public Queue createQueue(){
        return new Queue(queueName);
    }
}

创建消费者

/**
 * @program: springcloud-rabbitmq-demo
 * @description: 消费者
 * @author: 波波烤鸭
 * @create: 2019-05-21 23:26
 */
@Component
public class Receiver {
    /**
     * 接收消息的方法,采用消息队列监听机制
     * @param msg
     */
    @RabbitListener(queues = "${mq.queue.name}")
    public void process(String msg){
        System.out.println("recevier:"+msg);
    }
}

创建提供者

/**
 * @program: springcloud-rabbitmq-demo
 * @description: 消息的发送者
 * @author: 波波烤鸭
 * @create: 2019-05-21 23:23
 */
@Component
public class Sender {
    @Autowired
    private AmqpTemplate rabbitAmqpTemplate;
    @Value("${mq.queue.name}")
    private String queueName;
    /**
     * 创建发送消息的方法
     */
    public void send(String msg){
        // 参数: 队列名称 和 消息内容
        rabbitAmqpTemplate.convertAndSend("hello-queue",msg);
    }
}

启动类

@SpringBootApplication
public class SpringcloudRabbitmqDemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringcloudRabbitmqDemoApplication.class, args);
    }
}

单元测试

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringcloudRabbitmqDemoApplication.class)
public class SpringcloudRabbitmqDemoApplicationTests {
    @Autowired
    private Sender sender;
    @Test
    public void contextLoads() {
        sender.send("你好啊...");
    }
}

输出结果

image.png


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
125 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
1月前
|
消息中间件 存储 Java
RabbitMQ 和 Spring Cloud Stream 实现异步通信
本文介绍了在微服务架构中,如何利用 RabbitMQ 作为消息代理,并结合 Spring Cloud Stream 实现高效的异步通信。内容涵盖异步通信的优势、RabbitMQ 的核心概念与特性、Spring Cloud Stream 的功能及其与 RabbitMQ 的集成方式。通过这种组合,开发者可以构建出具备高可用性、可扩展性和弹性的分布式系统,满足现代应用对快速响应和可靠消息传递的需求。
106 2
RabbitMQ 和 Spring Cloud Stream 实现异步通信
|
4月前
|
消息中间件 存储 Kafka
一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
本文详细介绍了分布式消息中间件RocketMQ的核心概念、部署方式及使用方法。RocketMQ由阿里研发并开源,具有高性能、高可靠性和分布式特性,广泛应用于金融、互联网等领域。文章从环境搭建到消息类型的实战(普通消息、延迟消息、顺序消息和事务消息)进行了全面解析,并对比了三种消费者类型(PushConsumer、SimpleConsumer和PullConsumer)的特点与适用场景。最后总结了使用RocketMQ时的关键注意事项,如Topic和Tag的设计、监控告警的重要性以及性能与可靠性的平衡。通过学习本文,读者可掌握RocketMQ的使用精髓并灵活应用于实际项目中。
2692 9
 一文带你从入门到实战全面掌握RocketMQ核心概念、架构部署、实践应用和高级特性
|
5月前
|
消息中间件 缓存 NoSQL
基于Spring Data Redis与RabbitMQ实现字符串缓存和计数功能(数据同步)
总的来说,借助Spring Data Redis和RabbitMQ,我们可以轻松实现字符串缓存和计数的功能。而关键的部分不过是一些"厨房的套路",一旦你掌握了这些套路,那么你就像厨师一样可以准备出一道道饕餮美食了。通过这种方式促进数据处理效率无疑将大大提高我们的生产力。
206 32
|
消息中间件 Java 网络架构
|
消息中间件 新零售 弹性计算
云消息队列 RabbitMQ 版入门训练营,解锁对比开源优势与零基础实战
欢迎加入「云消息队列 RabbitMQ 版入门训练营」。
269 107
|
10月前
|
消息中间件 监控 Java
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
如何将Spring Boot + RabbitMQ应用程序部署到Pivotal Cloud Foundry (PCF)
158 6
|
消息中间件 Java 测试技术
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
这篇文章是关于如何在SpringBoot应用中整合RabbitMQ的消息中间件。内容包括了在SpringBoot项目中添加RabbitMQ的依赖、配置文件设置、启动类注解,以及如何通过单元测试来创建交换器、队列、绑定,并发送和接收消息。文章还介绍了如何配置消息转换器以支持对象的序列化和反序列化,以及如何使用注解`@RabbitListener`来接收消息。
消息中间件RabbitMQ---SpringBoot整合RabbitMQ【三】
|
消息中间件 Java Kafka
RabbitMQ 入门
RabbitMQ 入门
203 0
|
消息中间件 存储 Java
分享一下rocketmq入门小知识
分享一下rocketmq入门小知识
227 0
分享一下rocketmq入门小知识

热门文章

最新文章