zoukankan      html  css  js  c++  java
  • RabbitMq

    什么是RabbitMq

      Rabbitmq是一个开源的

      实现了AMQP(高级消息队列协议)的一个消息中件间

    周边

      Erlang,如 pyhon ruby  .net java c php actionscript等

    工作流程图

      

    消息队列中的核心概念

    1. 生产者(producer)发送消息的人(客户端程序)
    2. 消费者(consumer)接收的人
    3. 队列 (queue) 保存消息的容器
    4. 交换机|路由 (exchange)负责把消息正确的传递给队列

    应用场景

    1. 程序流程异步化

        注册流程异步化

       2.应用程序解耦

        订单系统和库存系统的解耦

    Rabbit mq安装配置

      Rabbitmq的运行环境通过虚拟机来解决

    1. 在windows系统中安装虚拟机vmware
    2. 在虚拟机里安装linux内核(centos7.0)的系统
    3. 在centos7.0 中安装erlang ,再安装rabbitmq

    注:步骤2、3通过虚拟机镜像省略

    主流虚拟机程序

      a) Oracle开源免费visual box(会有兼容问题)

      b) 商业收费的vmware

    虚拟机的安装

      注:开启cpu虚拟化技术

      开启方法:修改主板设置bios

      1.打开虚拟机

      2.导入centos镜像

    ·

    1. 报错找不到网卡(解决方法修改为自己的网卡)

     使用注意事项

    1. 找不到鼠标

        按下右边的ctrl+alt

      2.Centos系统账户和密码

        a) 用户名: root (类似windows  Administrator)

        b) 密码:123456 (输入密码时不会显示)root、

     登录成功

    虚拟机的网络设置

    1. 桥接模式 
    2. Nat模式

    查看虚拟机系统中的ip地址

      虚拟机查看ip地址:ifconfig

      Windows查看ip地址:ipconfig

     

    这个

     192.168.0.102

    就是虚拟机的ip 地址

    rabbitmq的后台管理界面

      访问地址:虚拟机ip地址:15672/#/

      账户:admin

      密码admin

    Rabbitmq的使用

      实现发送一个 Hello world

    实现步骤

    1. 通过javamain方法实现一个生产者

        a) 通过amqp依赖包提供的接口连接到rabbitmq服务

        b) 发送一条消息

    1. 通过main方法实现一个消息者

        a) 监听rabbitmq中的队列

        b) 当队列中有消息触发回调方法的执行

    Springboot中使用amqp

        普通消息处理

    1. 注解创建一个队列
    2. 往队列推送消息
    3. 监听队列来完成消息的消费

      路由消息处理

    1. Direct模式(直达模式)
    2. Topic模式 (匹配模式,使用通配符来推送)
    3. Fanout模式(广播模式)

    广播模式FanoutExchangefanout路由

     把消息发送给所有与广播路由绑定了的队列

      

     

    直达路由(DirectExchange)

         Direct路由和队列进行捆绑的时候可以设置routing key

     发送消息时携带routingkeydirect路由把消息推送给指定队列(绑定了routingkey的队列)

    举例

      日志打印的功能

      日志分类

      错误日志

      警告日志

      普通日志

    实现

    1. 创建两个队列errorQueue otherQueue

     

    主题路由(TopicExchange)(模糊匹配队列)

      匹配规则

      1.通配符 # *

        a) # 代表零个或多个词

        b) * 代表一个词

    1. 词和词使用.分隔

        举例

        1   *.orange.*

        2   *.*.rabbit

        3  Lazy.#

    注:队列和路由绑定时可以包含通配符,发送消息时不能,会被认为是一个字符

      Quick.orange.rabbit 匹配12

      Lazy.brown.fox  匹配3

      Lazy.orange.elpephant 匹配13

      Quick.orange.fox   匹配1

      Lazy.pink.rabbit  匹配 23

    注:路由绑定逻辑很复杂

    应用场景

    1. 异步处理

        a) 注册流程的优化

    1. 应用解耦

        a) 订单系统和库存系统

    1. 流量削锋

        a) 秒杀系统

    1. 日志处理

        a) 把日志持久操作通过消息队列改成异步操作

    1. 消息通讯

        a) 通过消息发布和订阅,实现把消息推送给不同的客户端

    实现注册的流程优化

    1. 用户提交注册表单
    2. 发送激活邮件的步骤改成异步操作
    3. 响应客户端

    Java如何发送邮件

    1. 第三方提供服务
    2. 通过SMTP协议发送邮件(163邮箱)
    3. 自己搭建邮箱系统
  • 相关阅读:
    外贸邮箱哪个是安全邮箱?申请163电子邮箱可以吗?
    申请163电子邮箱,163邮箱格式是么样的?
    传统小游戏是否已过时?经典案例告诉你
    超越前作,H5游戏微创新是王道
    163邮箱哪个安全好用?常用的电子邮箱品牌有哪些?
    开通企业邮箱多少钱?企业邮箱怎么注册申请?
    如何保护电子邮箱安全?163邮箱安全吗?
    外贸邮箱怎么注册?集团公司企业邮箱哪个更适合?
    NBA战火重燃,H5游戏带你重拾青春回忆
    H5游戏定制选题知多少
  • 原文地址:https://www.cnblogs.com/lin02/p/11490492.html
Copyright © 2011-2022 走看看