zoukankan      html  css  js  c++  java
  • RabbitMQ

    Rabbitmq 简介

      

    一.核心组件


    1. 链接对象(connection)

      当代码程序链接rabbitmq作为客户端操作的消息队列时,需要通过链接对象对接。

      由于其在底层是一个基于tcp/ip协议的长链接,频繁销毁创建会消耗系统资源,所以通常我们需要在他身上获取一个短链接(channel)

    2. 交换机(exchange)

      消息的并发处理不是直接交给客户端去处理(客户端语言不同,并发能力也不同),而是统一由交换机接受客户端的消息。RabbitMQ使用erlang(一种并发语言)开发的,并发能力稳定,并发性能高。

      RabbitMQ中存在四种交换机模式:

      • 直连交换机:Direct exchange

      • 扇形交换机:Fanout exchange

      • 主题交换机:Topic exchange

      • 首部交换机:Headers exchange

    3. 队列(queue)

      队列是rabbitmq里接受存储消息对象的组件,其必须绑定一个交换机。

      当交换机接受到客户端发送的消息时,会根据路由逻辑判断当前消息发送给哪个/哪些队列。把消息封装成对象,最终发送到队列

      

    二. 客户端角色


    所有能链接rabbitmq的软件,代码,插件都可以是rabbitmq的客户端,根据客户端功能不同,可以区分成不同的角色。

    1. 生产者productor

      生产者负责将客户端准备好的消息发送到rabbitmq。

    2. 消费者consumer

      消费者监听队列,从队列中拿到已经存储的消息对象,进行客户端的消费逻辑.

    3. 无角色

      如果客户端连接上rabbitmq 没有发送消息,也不需要接收消费消息,就是无角色的客户端。无角色客户端可以实现通过链接来声明组件。

      exchange不是自动生成来给你使用的,不同的系统,不同的客户端可以有不同的自定义的交换机,对于queue也是一样。

      组件的创建过程也是由客户端完成的.

      

    三. 五种工作模式


    1. 简单模式

      简单模式中每个队列只被一个消费端监听。

      生产端负责发送消息到交换机,明确表明路由目的地。交换机接收到消息,根据路由目的转发。消费端负责监听到这个队列,一旦发现消息则执行消费逻辑。

      适用于发短信/邮件,这种一发一接的应用场景。

    2. 争抢模式

      争抢模式中,消息队列可以由多个消费端同时监听形成争抢。

      使用场景:抢红包

    3. 路由模式

      路由模式中,交换机将会按照消息的路由Key转发消息。

      生产端将携带路由key(目的地)的消息发送到交换机。交换机(类型为:direct)根据消息的路由key匹配队列,一旦匹配上了就将消息转发出去。消费端可以一对一监听,也能一对多监听。

      对应于直连交换机

      注:交换机不会存储消息,若没有匹配到或发送完毕,消息就直接删除了。

    4. 发布订阅

      发布订阅模式中,交换机不再判断路由,而是将消息发送给后端所有绑定他的队列,即群发。

      对应于扇形交换机

      可以应用于邮件群发

    5. 主题模式

      主题模式中,队列绑定交换机时使用的是一个范围key。(发布订阅中使用的是明确的key)

      对应于主题交换机

      后端队列绑定交换机使用特殊符号代替路由key字符串:

      • #:表示任意多级的任意长度字符串
      • *:表示一级的任意字符串

      应用场景:物流分拣。

  • 相关阅读:
    3. 文件存储格式
    2. Reduce 输出压缩
    Nginx+Tomcat搭建集群环境
    redis缓存失效及解决方案
    几种开源NOSQL数据库
    使用Maven开发用户模块的CRUD(增删改查)
    Spring Boot 面试题整理
    oracle 11g&12c(pdb&cdb)系统巡检
    Redhat 6.8部署oracle12.2.0.1.0
    sqlserver创建程序集
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13091495.html
Copyright © 2011-2022 走看看