rabbitmq

1. 概述

  1. 与 rabbitmq 做交互

    1. amqp 最著名的实现
  2. 与 jms 最明显的区别

    1. 消息
      1. 不是去找 queue
      2. 而是去找 exchange

2. rabbitmq

  1. 基本组件

    1. sender
      1. 发送者
    2. receiver
      1. 接收者
        1. 从 queue 里接受消息
    3. broker
      1. 概述
        1. 队列服务器, 中间件
      2. 组件
        1. exchange
          1. 作用
            1. 接受 消息
            2. 转发消息
        2. binding
          1. 貌似是 queue 的一个属性
        3. queue
          1. 存放消息, 等待消费
  2. 与 jms 的区别

    1. jms

      1. 分发
        1. 直接将消息分发到 queue
      2. 消息
        1. 携带着 目的地址
    2. rabbitmq

      1. 分发
        1. 有着相对复杂的规则
        2. 规则根据 exchange 和 消息携带的信息, 进行转发
      2. 消息
        1. 不携带 目的 queue
        2. 携带的是 routing key
  3. 消息的活动路径

  4. exchange 简述

    1. default
      1. 默认创建
      2. 知道 broker 里所有的 queue
      3. 转发
        1. 找到 消息里 routing key
        2. 找到 queue 名称
        3. 如果相同, 就发过去
    2. direct
      1. 类似 default
        1. 这次比对的, 是 消息的 routing key 和 queue 的 bingding key
    3. topic
      1. 类似 direct
        1. 不过区别是, 转发的次数, 可能会有很多
          1. 支持 binding key 正则匹配
    4. fanout
      1. @所有人
    5. header
      1. 类似 topic
        1. 不过这次的判定依据, 是 消息的 header 与 binding key
    6. dead letter
      1. 类似 java 的 catch
        1. 转发那些有问题的消息
  5. 我的认识

    1. message

      1. 属性

        1. header
        2. 内容
        3. 发送时指定
          1. routing key
          2. exchange
      2. jms

        1. jms 的消息, 貌似没有这么多属性
        2. 地址 都是在发送时候由 template 指定的
          1. 不过连接字符串倒是已经配好了的
    2. queue

      1. 属性
        1. name
        2. binding key
        3. queue
    3. 消息的路径

      1. 使用特定的 假设有个 template 与 broker 通信
        1. 感觉通常 一个 template 对应 一个 broker
        2. 一个 broker 对应一个 exchange
      2. 到了 exchange 后, 与 规则匹配, 然后转发
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出
原文地址:https://www.cnblogs.com/xy14/p/11808879.html