RabbitMQ(十二)

发布时间 2024-01-12 11:08:54作者: DAYTOY-105

1 RabbitMQ概述

RabbitMQ 是基于Erlang语言开发的开源消息通信中间件,官网地址:http://www.rabbitmq.com/

RabbitMQ的结构和概念

RabbitMQ中的相关概念:

  • channel:操作MQ的工具;
  • exchange:路由消息到队列中;
  • queue:缓存消息;
  • virtual host:虚拟主机,是对queue、exchange等资源的逻辑分组。

2 常见消息模型

MQ的官方文档中给出了5个MQ的Demo示例,对应了几种不同的用法:

  • 基本消息队列(BasicQueue)

  • 工作消息队列(WorkQueue)
  •  发布订阅(Publish、Subscribe),又根据交换机类型不同分为三种:
    • Fanout Exchange:广播

       

    • Direct Exchange:路由

    • Topic Exchange:主题

       

3 案例分析

3.1 HelloWorld案例

官方的HelloWorld是基于最基础的消息队列模型来实现的,只包括三个角色

  • publisher消息发布者,将消息发送到队列queue;
  • queue消息队列,负责接受并缓存消息;
  • consumer订阅队列,处理队列中的消息。

     

 基本消息队列的消息发送流程

  1. 建立connection;
  2. 创建channel;
  3. 利用channel声明队列;
  4. 利用channel向队列发送消息。

基本消息队列的消息接收流程

  1. 建立connection;
  2. 创建channel;
  3. 利用channel声明队列;
  4. 定义consumer的消费行为handleDelivery()
  5. 利用channel将消费者与队列绑定。