zoukankan      html  css  js  c++  java
  • rabbitmq(一)-基础入门

    原文地址:https://www.jianshu.com/p/e186a7fce8cc

    在学东西之前,我们先有一个方法论,知道如何学习。学习一个东西一般都遵循以下几个环节:

    1. xxx是什么,诞生的原因,能解决什么问题。
    2. 如何安装,如何使用(快起启动一个demo)。
    3. 涉及到的一些基础概念介绍和基础入门使用。
    4. 中阶、高阶的功能特性使用。
    5. 高可用部署方案。
    6. 原理的深入理解。

    这篇文章主要处于第一、二环节,让新手更好得入门。

    1、rabbitmq是什么

    rabbitmq 是目前非常热门的一款消息中间件。Rabbit 这样名字,是因为兔子行动非常迅速且繁殖起来非常疯狂, RabbitMQ 的开创者认为以此命名这个分布式软件再合适不过了。

    RabbitMQ 是采用 Erlang 语言实现 AMQP (Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,所以rabbitmq的特点是可靠性传输,性能在可靠性后面

    2、为什么要使用mq,为什么要选rabbitmq

    为什么要使用mq?

    mq一般有两种模式
    一种是点对点模式:主要是为了削峰和异步。
    另一种是广播模式:主要是为了业务之间的解耦。

    简单说就是业务有需要对流量削峰的场景,有需要对业务解耦场景。

    为什么要选rabbitmq?

    rabbitmq的特点如下:
    1、可靠性: RabbitMQ是为了金融系统而生, 所以特地使用一些机制来保证可靠性,如持久化、传输确认及发布确认等。
    2、灵活的路由器:4种路由器
    3、扩展性:多个 rabbitmq 节点可以组成个集群,也可以根据实际业务情况动态地扩展集群中节点。
    4、高可用:拥有镜像队列防止容灾消息丢失。

    让我们使用mq产品做重要的业务处理(例如金额、订单)的时候,我们最基本的述求是
    1、可靠稳定,消息不丢失。
    2、有集群容灾方案。
    3、灵活的功能特性。
    4、性能在可靠的基础上
    rabbitmq都能完美胜任。

    4、rabbitmq的安装

    这里只介绍docker安装方式
    docker run -d --name myrabbit1 -p 15672:15672 -p 5672:5672 rabbitmq:3.6.15-management

    安装之后访问 localhost:15672(localhost改服务器ip)见到如下界面代表安装成功。

    使用默认账号guest/guest登录

    管理台的界面后续再一个一个地方详细讲解。

    4、快速使用的demo
    这里以springboot为例子展示如何快速使用rabbitmq
    4.1 新建springboot工程同时增加配置

    spring.rabbitmq.host=localhost
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
    

    4.2 引入ampq的springboot-start依赖

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

    4.3 新建配置文件,初始化队列

    @Configuration
    public class RabbitMqConfig {
        @Bean
        public Queue demo(){
            Queue demo = new Queue("demo");
            return demo;
        }
    }
    

    4.4 新建消费者、生产者。

    @RestController
    @RequestMapping
    public class Controller {
        @Autowired
        private RabbitTemplate rabbitTemplate;
        @GetMapping("sendMq")
        public String sendMq(String msg){
            rabbitTemplate.convertAndSend("demo",msg);
            return msg;
        }
    }
    
    @Component
    public class DemoLister {
        @RabbitListener(queues = "demo")
        public void Lister(Message message){
            byte[] body = message.getBody();
            System.out.println("接受到的消息体:"+new String(body));
        }
    }
    

    4.5 发送消息查看效果
    执行命令curl localhost:8080/sendMq?msg=abc
    查看效果

    5、最后
    git clone -b teacher-1 https://gitee.com/guoeryyj/rabbitmq-teacher.git下载试例代码x

  • 相关阅读:
    布局管理
    菜单和工具栏
    Hello World,本章学习Qt的基本功能
    PyQt5中文手册
    qemu-kvm使用
    查看内核日志
    tmux快捷键
    vim插件YouCompleteMe安装
    git submodule删除多余模块
    vim ctags
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/13943230.html
Copyright © 2011-2022 走看看