zoukankan      html  css  js  c++  java
  • RabbitMQ实战指南-RabbitMQ简介

    1、什么是消息中间件?

     消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串、JSON等,也可以很复杂,比如内嵌对象。

     消息队列中间件(Message Queue Middleware,简称MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流。并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。

      它一般有两种传递模式:

    • 点对点模式
    • 发布订阅模式

    2、消息中间件的作用

    • 解耦
    • 冗余 (存储):有些情况下,处理数据的过程会失败。消息中间件可以把数据进行持久化知道它们被处理完成,通过这一方式规避了数据丢失。在把一个消息从消息中间件中删除前,需要你的处理系统明确的指出该消息已经被处理完成了。
    • 扩展性 :因为消息中间件解耦了应用的处理过程,所以提高消息入队和处理的效率是很容易的,只要另外增加处理过程就可以了,不需要改变代码,也不需要调节参数
    • 削峰 : 在访问量剧增的情况下,使用消息中间件能够使关键组件支撑突发访问压力,不会因为突发的超负荷请求而完全崩溃
    • 可恢复性
    • 顺序保证
    • 缓冲
    • 异步通信 :在很多情况下一些应用不需要立即处理消息。消息中间件可以提供异步处理机制 

    3、相关概念

    • Exchange : 交换器,负责接收生成者的消息并路由到一个或多个消息队列中,它有四种类型:
      • direct :RoutingKey 和 BindingKey 完全匹配
      • fanout :将消息路由到所有与交换机绑定的队列中
      • topic : RoutingKey 和 BindingKey 都是 " . "分割的字符串,BindingKey中允许两个特殊字符 ” # “ 和 ” *  “ 来模糊匹配,# 可匹配多个单词,* 只能匹配一个单词
    • Binding : 绑定,RabbitMQ中通过绑定将交换器和队列关联起来,在绑定的时候会指定一个BindingKey,这样RabbitMQ就知道如何正确的将消息路由到队列了。
    • pupRoutingKey :路由键,用来指定这个消息的路由规则

    4、Mandatory参数

    • mandatory == true :无法匹配到消息队列,那么消息返回生产者,可以通过调用channel.addReturnListener来添加ReturnListener监听器来获取消息
    • mandatory == false :无法匹配到消息队列,消息直接丢失

    5、immediate参数

    • immediate == true :当交换机在将消息路由到队列时,如果发现这个队列没有消费者就不会保存消息到这个队列。当与路由键匹配的所有队列都没有消费者,就将消息返回给生成者。
    • 版本3.0去掉了该参数的支持 

    6、备份交换机(Alternate Exchange)

      消息未被路由的情况下,不想消息丢失可以采取备份交换机

    • 在声明交换器(调用channel.exchangeDeclare)时添加参数alternate-exchange来实现
    • 或者通过策略方式实现,上面方式优先级更高
  • 相关阅读:
    sublime text 前端插件安装
    echarts常用的配置项
    2018年okr
    charlse配置
    运维笔记
    移动端开发兼容问题全记录
    centos6下python开发环境搭建
    centos安装python2.7
    centos6安装MariaDB
    pzea上centos6安装mysql57
  • 原文地址:https://www.cnblogs.com/TripL/p/13374452.html
Copyright © 2011-2022 走看看