前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RabbitMQ01-入门介绍

RabbitMQ01-入门介绍

作者头像
用户4919348
发布2019-05-23 11:11:06
4370
发布2019-05-23 11:11:06
举报
文章被收录于专栏:波波烤鸭波波烤鸭

前面给大家介绍过了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也是首选;

消息队列基础知识。

1 Provider

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

2 Consumer

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

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

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

5 什么是队列?

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

6 队列里存储了什么?

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

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

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

入门案例

1.创建项目

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

代码语言:javascript
复制
<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相关的配置

代码语言:javascript
复制
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.编写代码

目录结构

创建消息队列

代码语言:javascript
复制
/**
 * @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);
    }
}

创建消费者

代码语言:javascript
复制
/**
 * @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);
    }
}

创建提供者

代码语言:javascript
复制
/**
 * @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);
    }
}

启动类

代码语言:javascript
复制
@SpringBootApplication
public class SpringcloudRabbitmqDemoApplication {

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

}

单元测试

代码语言:javascript
复制
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringcloudRabbitmqDemoApplication.class)
public class SpringcloudRabbitmqDemoApplicationTests {

    @Autowired
    private Sender sender;

    @Test
    public void contextLoads() {
        sender.send("你好啊...");
    }
}

输出结果

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RabbitMQ
    • AMQP 简介
      • RabbitMQ简介
        • 为什么要使用 RabbitMQ?他解决了什么问题?
          • 消息队列基础知识。
            • 1 Provider
            • 2 Consumer
            • 3 没有使用消息队列时消息传递方式
            • 4 使用消息队列后消息传递方式
            • 5 什么是队列?
            • 6 队列里存储了什么?
            • 7 队列和应用程序的关系?
          • 入门案例
            • 1.创建项目
              • 2.配置
                • 3.编写代码
                  • 创建消息队列
                  • 创建消费者
                  • 创建提供者
                  • 启动类
                  • 单元测试
                  • 输出结果
              相关产品与服务
              消息队列 CMQ 版
              消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档