zoukankan      html  css  js  c++  java
  • RabbitMQ-基本概念(一)

    整体架构模型

    Producer

    消息生产者,生产者创建消息然后发布到RabbitM中,消息一般包含2个部分 消息体(payload)和标签 消息体就是带有业务逻辑结构的数据,消息标签用来表述这条消息,比如交换器名称和路由键

    生产者将消息交给RabbitMQ rabbItMQ会根据标签将消息投递到对应的消费组

    队列

    RabbitMQ的内部对象,用于存储消息 rabbitMQ不支持广播消息,当多个消费者订阅同一个队列,则会平均分摊到对应的消费者

    Consumer

    消费者,消费组连接到RabbitMQ并订阅到队列上,当消费一条消息只会消费消息体 标签会被丢弃

    Exchange

    交换器,生产者将消息投递到exchange exchange将消息路由到一个或者多个队列 如果路由不到可以返回给生产者或者直接丢弃exchange含有4种类型

    fanout:将所有发送到该交换器的消息路由到所有与该交换器绑定的队列中(不需要经过binding key 路由 所以最快)

    direct:将消息路由到routing key和binding key完全匹配的队列中

    topic:direct是完全匹配 topic则是模糊匹配 如有路由键 

      路由键:*.rabbitmq.*可以路由:com.rabbitmq.client java.rabbitmq.demo

      路由键:*.*.client 可以路由com.rabbitmq.client com.hiddent.client

      路由键:com.#可以com.rabbitmq.client com.hiddent.client com.hiddent.demo

      .分割的算一个但是 *表示模糊一个单词 #表示多个单词

      比如*.rabbitmq.* 表示[任意一个单词].rabbitmq.[任意一个单词]  com.test.rabbitmq.com 是不能路由的 因为rabbtimq左边有2个单词 com和test

    headers,

    不依赖于路由键盘的匹配规则来路由消息 而是根据发送消息内容中的headers属性进行匹配,在绑定队列和交换器时指定一组键值对,发送消息会获取headers的来进行路由匹配 效率很低 基本不会使用

    RoutingKey

    路由键,生产者将消息发给交换器的时候一般会指定一个routingKey用来指定这个消息的路由规则 routingKey需要和BidingKey联合使用才能生效

    BindingKey

    通过BidingKey将交换器与队列关联起来 交换器通过BindingKey知道路由到哪个队列上

    理解

    producer理解为包裹寄送人

    exchange 理解为配送驿站

    routing key 理解为配置驿站地址

    binding key理解目的地址 

    复用Channel

    发送消息和消费消息都需要1.创建连接再根据连接创建channel  跟java nio模型一样,复用连接多个生成者和多个消费者复用一个连接,避免为每个生产者和消费者都创建一个连接

    但是要注意channel并不是线程共享的 需要为每个线程创建一个channel 不能a线程创建了channel进行发送消息 然后又给b线程发消息 b线程应该另外创建channel

    什么是AMQP协议

    上面的架构模型 生产者通过routing key投递消息到exchage exchage根据binding key 路由到队列 具体书26页

  • 相关阅读:
    [centos6.5]添加eclipse快捷方式
    Maven 实用命令和技巧
    MyEclipse 15 集成SVN
    Eclipse不给提示no default proposals
    Eclipse快捷键
    Maven打包排除不需要的文件。
    MySQL用法
    Idea反向生成JavaBean
    java.lang.NoClassDefFoundError: [Lorg/hibernate/engine/FilterDefinition
    Spring+SpringMVC+MyBatis+Maven 服务端XML配置
  • 原文地址:https://www.cnblogs.com/LQBlog/p/10926831.html
Copyright © 2011-2022 走看看