• RabbitMQ:一、入门


    消息中间件

    • 使用消息中间件的作用

      • 解耦
      • 削峰
      • 异步
      • 顺序保证
      • 冗余(存储)
    • 使用MQ带来的问题

      • 系统的可用性降低
      • 系统的复杂性提高
    • RabbitMQ的特点

      • 可靠性
      • 灵活的路由
      • 扩展性
      • 高可用
      • 多语言客户端
      • 插件机制
      • 多协议(主要还是AMQP)

    相关概念

    • Producer:生产者,投递消息的一方
    • Consumer:消费者,接收消息的一方
    • Broker:RabbitMQ的服务节点
    • Queue:队列,是RabbitMQ的内部对象,用于存储消息。RabbitMQ中消息只能存储在队列中,这一点和Kafka这种消息中间件相反。Kafka将消息存储在topic(主题)这个逻辑层面,而相应的队列逻辑只是topic实际存储文件中的位移标识。RabbitMQ 的生产者生产消息井最终技递到队列中,消费者可以从队列中获取消息并消费。
      多个消费者可以订阅同一个队列,这时队列中的消息会被平均分摊 CRound-Robin ,即轮询)
      给多个消费者进行处理,而不是每个消费者都收到所有的消息井处理,如图所示

      RabbitMQ 不支持队列层面的广播消费,如果需要广播消费,需要在其上进行 次开发,处理逻辑会变得异常复杂,同时也不建议这么做。
    • Exchange:交换器。上图看起来像是我们将消息丢到消息队列当中,实际上这在rabbitMQ中不会发生。实际上生产者将消息丢到交换器中,由交换器将消息路由到一个或者多个队列中。
      如果路由不到,或许返回给生产者,或许直接丢弃。交换器有四种类型。交换器可以理解成一个绑定列表。
    • RoutingKey:路由键。生产者将消息->交换器时,一般指定一个RoutingKey来决定路由规则。RoutingKey需要和交换器类型及绑定键联合使用。
    • Binding:绑定。通过绑定将队列和交换器关联起来。绑定时一般会指定绑定键(BingdingKey),当RoutingKey与BingdingKey匹配时,消息会被路由到对应的队列中。
    • 交换器类型
      • fanout:把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
      • direct:把消息路由到那些BindingKey与RoutingKey完全匹配的队列中。
      • topic:与direct类型有些类似,不过队列的匹配规则有些不同
        • RoutingKey为"."号分隔的字符串(被分开的每一段独立字符称为一个单词),如"com.rabbitmq.client","java.util.concurrent";
        • BindingKey的形式与RoutingKey一样;
        • BindingKey可以存在两种特殊字符串"","#",用于做模糊匹配,""用于匹配1个单词,"#"用于匹配多个单词(可以是0个)。
      • headers:不依赖于路由键的规则,而是根据消息内容中的headers属性进行匹配。绑定队列和交换器时指定键值对,发送消息到交换器时,RabbitMQ会拿headers属性里的键值对进行对比,完全匹配则会路由到对应队列。headers类型交换器性能很差,很少使用。
    • Connection:生产者与消费者和Broker之间建立的TCP连接。
    • Channel:信道。建立在Connection之上的虚拟连接。RabbitMQ处理的每条AMQP指令都是通过信道完成的。

      RabbitMQ通过采用类似NIO的做法,选择TCP连接复用,减少性能开销,便于管理。

    参考资料:RabbitMQ实战指南

  • 相关阅读:
    windows下python-nmap运行过程中出现的问题及解决办法
    命令行下cl.exe编译链接的问题及解决方法
    httrack: error while loading shared libraries: libhttrack.so.2的解决方法
    AES加解密非固定长度文本的用法
    John the Ripper password cracker试用
    ubuntu12.04使用root登陆的简单设置
    map按value查找相应元素
    ListCtrl添加右键菜单(ListCtrl类里编辑,给ListCtrl 发送NM_RCLICK消息)
    今天发现里一个非常好用的Listbox自绘类,带不同文字字体和图片,觉得很有必要记下来
    自绘listCtrl控件选中该行高亮(模拟windows)
  • 原文地址:https://www.cnblogs.com/fcb-it/p/12945852.html
Copyright © 2020-2023  润新知