为了账号安全,请及时绑定邮箱和手机立即绑定

RabbitMQ消息中间件极速入门与实战

难度中级
时长 2小时31分
学习人数
综合评分8.80
50人评价 查看评价
9.3 内容实用
8.4 简洁易懂
8.7 逻辑清晰
  • 在一个类加载完了再去加载另一个类的方法

    查看全部
  • 读取非默认配置文件的值的办法

    查看全部
  • 消息确认模式,消息发出去之后异步的等待。

    查看全部
  • 默认的主机是/

    也可以自己建虚拟主机,回头看看是怎么用的。

    查看全部
  • rabbitmq启动它拥有的一些插件

    查看全部
  • 整个安装过程

    查看全部
  • 第一步erlan那一个

    第二步socat那一个

    第三步 rabbitmq那一个

    查看全部
  • 消息可靠性图

    查看全部
  • 消息投靠方案设计

    查看全部
  • 消息投递成功设计方案:http://img1.sycdn.imooc.com//5ef8053700012ba110170654.jpg

    查看全部
  • AMQP核心概念

    Server:又称Broker,接受客户端的连接,实现AMQP实体服务

    Connection:连接,应用程序与Broker的网络连接

    Chnnel:网络通道,几乎所有的操作都在Channel中进行,Channel是实进行消息读写的通道。客户端可以建立多个Channel,每个Channel代表一个会话任务。

    Message:消息。服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。

    Virtual host:虚拟地址,用于进行逻辑隔离,最上层的消息路由。一个Virtual Host里面可以有若干个Exchange和Queue,同一个Virtual Host里面不能有相同名称的Exchage或Queue。

    Exchange:交换机,接收消息,根据路由键转发消息到绑定的队列。

    Binding:Exchange和Queue之间的虚拟连接,binding中可以包含 routing key。

    Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息。

    Queue:也称为Message Queue ,消息队列,保持消息并将它们转发给消费者。


    http://img1.sycdn.imooc.com//5ef6e1c2000108d710200579.jpg



    查看全部
  • package com.mfl.demo.utils;
    
    import com.mfl.demo.entity.Order;
    import com.rabbitmq.client.Channel;
    import org.springframework.amqp.rabbit.annotation.*;
    import org.springframework.amqp.support.AmqpHeaders;
    import org.springframework.messaging.handler.annotation.Headers;
    import org.springframework.messaging.handler.annotation.Payload;
    import org.springframework.stereotype.Component;
    
    import java.util.Map;
    
    @Component
    public class MessageConsumerUtils {
    
        @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "mfl-1-queue",durable = "true"),
                                                 exchange = @Exchange(name = "mfl-1-exchange", type = "topic"),
                                                  key = "order.*"
        ))
        @RabbitHandler
        //Payload 指定消息体是order
        public void receive(@Payload Order order, @Headers Map<String,Object> headers, Channel channel) throws Exception{
            System.out.println("-------收到消息,开始消费---------");
            System.out.println(order.getName());
            Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
    //        deliveryTag:该消息的index
    //        multiple:是否批量.true:将一次性ack所有小于deliveryTag的消息。
            channel.basicAck(deliveryTag,false);
        }
    
    }

    配置文件:

    ## springboot整合rabbitmq基本配置
    spring.rabbitmq.addresses=192.168.254.135:5672
    spring.rabbitmq.username=guest
    spring.rabbitmq.password=guest
    spring.rabbitmq.virtual-host=/
    spring.rabbitmq.connection-timeout=15000
    
    ## springboot整合rabbitmq消费端配置
    #线程数
    spring.rabbitmq.listener.simple.concurrency=5
    #签收模式manual:手工签收  auto自动签收 none不签收
    spring.rabbitmq.listener.simple.acknowledge-mode=manual
    #最大线程数
    spring.rabbitmq.listener.simple.max-concurrency=10
    #限流,每个线程同一时间只能过来一条消息,消费完了再取下一条
    spring.rabbitmq.listener.simple.prefetch=1
    
    server.servlet.context-path=/
    server.port=8002


    查看全部
  • package com.mfl.demo.utils;
    
    import com.mfl.demo.entity.Order;
    import org.springframework.amqp.rabbit.connection.CorrelationData;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MessageProducerUtils {
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        public void send(Order order) throws Exception{
            rabbitTemplate.setConfirmCallback((correlationData, ack, cause) -> {
                System.out.println("correlationData:"+correlationData);
                if(ack){
                    System.out.println("回调成功--------");
                }else {
                    System.out.println("回调失败,异常处理............."+cause);
                }
                         });
            CorrelationData correlationData = new CorrelationData();
            correlationData.setId(order.getMessageId());
            rabbitTemplate.convertAndSend("mfl-1-exchange", //交换机
                    "order.abcd",//rountingKey
                    order,//消息内容
                    correlationData);//消息唯一id
        }
    }

    回调函数需要在生产者代码配置文件里配置

    spring.rabbitmq.publisher-confirm-type=correlated


    查看全部
  • RabbitMQ的安装过程

    1.准备:


    yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz



    2.下载


    wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm


    wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm


    wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm


    3.配置:


    vim /etc/hosts 以及 /etc/hostname


    配置文件:


    vi /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

    比如修改密码、配置等等,例如:loopback_users 中的 <<"guest">>,只保留guest, 用于登陆管控台

    启动:rabbitmq-server start &

    停止: rabbitmqctl app_stop


    4.管理插件:启用管控台


    rabbitmq-plugins enable rabbitmq_management


    5.访问地址:http://127.0.0.1:15672/

    http://img1.sycdn.imooc.com//5ea538b50001a28811430609.jpg

    查看全部
  • 你看你看1

    查看全部
    0 采集 收起 来源:RabbitMQ简介

    2020-04-10

举报

0/150
提交
取消
课程须知
有一定的Linux基础,springboot基础,熟悉JAVA主流框架ssm(spring+mybatis整合)
老师告诉你能学到什么?
1.RabbitMQ安装与使用 2.RabbitMQ核心概念 3.RabbitMQ整合SpringBoot2.x生产端发送消息 4.RabbitMQ整合SpringBoot2.x消费端处理消息 5.RabbitMQ-消息的可靠性投递-实现方案 6.RabbitM整合SpringBoot2.x-消息可靠性投递-实现方案落地代码详解

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!