RabbitMQ的简介

发布于:2025-05-19 ⋅ 阅读:(23) ⋅ 点赞:(0)

三个概念

  1. 生产者:生产消息的服务
  2. 消息代理:消息中间件,如RabbitMQ
  3. 消费者:获取使用消息的服务

消息队列到达消费者的两种形式

  1. 队列(queue):点对点消息通信(point-to-point)

    消息进入队列,消费者监听队列,一旦有消息则获取消息,消息被获取后移除队列。
    队列可以被多个消费者监听,但是只有一个可以获取。

  2. 主题(topic):发布(publish)/订阅(subscribe)消息通信|

    发布者(生产者)发送消息到主题,多个订阅者(消费者)订阅(监听)这个主题,则在消息到达的同时就会同时得到消息

在这里插入图片描述

两种常见的消息中间件协议

  1. JMA:(Java Message Servier) Java 消息服务
    -基于JVM消息代理规范。ActiveMQ、HornetMQ是JMS实现

  2. AMQP:(Advanced Message Queuing Protocol)
    -高级消息队列协议,兼容JMS
    -RabbitMQ是AMOP的实现。

    主要区别 JMS AMOP
    跨语言
    跨平台
    model 1) point-to-point 点对点
    2)topic 主题
    1)direct exchange(直接交换机)—点对点
    2)fanout exchange
    3)topic exchange

交换机类型

direct(直接)、fanout(扇出)、topic(主题)、headers

direct

路由键需要与binding全匹配才行

在这里插入图片描述

fanout–广播模式

不处理绑定和路由键,收到消息直接全部发送,类似广播

在这里插入图片描述

topic

需要绑定关系(binding)和路由键(routing key)按一定规则匹配,路由键和绑定关系分割成单词,单词间用".“隔开。同时会识别两个通配符”#“和”*“。”#"匹配0个或多个单词 "*"匹配一个单词

在这里插入图片描述

RabbitMQ的执行流程

生产者:建立一个长连接,通过连接里面的信道发送消息-指定哪一个交换机。

消息message:头+体:消息头中有一个很重要的路由键 (Routing Key)

RabbitMQ:消息到达中间件,服务器会交给交换机(exchange),交换机会根据消息中的路由键(routing key)去寻找对应的绑定关系(binding),然后消息入队。

**消费者:**建立一个长连接,每个长连接会有很多信道。每个信道用来监听队列

在这里插入图片描述

消息确认机制

confirmCallback:消息达到消息服务(broker),就会执行。集群模式下,要被所有的代理都接受到才会执行。

returnCallback:交换机到队列投递失败后执行。

ack:消费者获取消息后自动确认,服务端会删除这个消息。需改为手动确认。否则宕机后会消息丢失。调用channel.basicAck()方法签收

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到