技术分享 RabbitMQ 学习笔记 -- 01 简介

chester · 2020-10-23 08:00:53 · 热度: 53

一,简介

RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗,消息队列是一种应用系统之间的通信方法,是通过读写如队列的信息来通信(RPC 则是通过直接调用彼此来通信的)

AMQP (Advanced Message Queuing Protocol) 高级消息队列协议是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

二,基本概念

  • ConnectionFactory (连接工厂): 生产 Connection 的的工厂
  • Connection (连接):是 RabbitMQ 的 socket 的长链接,它封装了 socket 协议相关部分逻辑
  • Channel (频道|信道): 是建立在 Connection 连接之上的一种轻量级的连接,我们大部分的业务操作是在 Channel 这个接口中完成的,包括定义队列的声明 queueDeclare、交换机的声明 exchangeDeclare 、队列的绑定 queueBind、发布消息 basicPublish 、消费消息 basicConsume 等。如果把 Connection 比作一条光纤电缆的话,那么 Channel 信道就比作成光纤电缆中的其中一束光纤。一个 Connection 上可以创建任意数量的 Channel。

名称:

  1. Producer (生产者):生产者用于发布消息
  2. Exchange (交换机):生产者会将消息发送到交换机,然后交换机通过路由策略(规则)将消息路由到匹配的队列中去
  3. Routing Key (路由键):一个 String 值,用于定义路由规则,在队列绑定的时候需要指定路由键,在生产者发布消息的时候需要指定路由键,当消息的路由键和队列绑定的路由键匹配时,消息就会发送到该队列。
  4. Queue (队列):用于存储消息的容器,可以看成一个有序的数组,生产者生产的消息会发送到交换机中,最终交换机将消息存储到某个或某些队列中,队列可被消费者订阅,消费者从订阅的队列中获取消息。
  5. Binding (绑定): Binding 并不是一个概念,而是一种操作,RabbitMQ 中通过绑定,以路由键作为桥梁将 Exchange 与 Queue 关联起来(Exchange —> Routing Key —> Queue),这样 RabbitMQ 就知道如何正确地将消息路由到指定的队列了,通过 queueBind 方法将Exchange、Routing Key、Queue绑定起来
  6. Consumer (消费者):用于从队列中获取消息,消费者只需关注队列即可,不需要关注交换机和路由键,消费者可以通过 basicConsume (订阅模式可以从队列中一直持续的自动的接收消息)或者 basicGet (先订阅消息,然后获取单条消息,再然后取消订阅,也就是说 basicGet 一次只能获取一条消息,如果还想再获取下一条还要再次调用basicGet)来从队列中获取消息
  7. vhost(虚拟主机): RabbitMQ 通过虚拟主机(virtual host)来分发消息, 拥有自己独立的权限控制,不同的 vhost 之间是隔离的,单独的。vhost 是权限控制的基本单位,用户只能访问与之绑定的 vhost,默认 vhost:”/” ,默认用户”guest” 密码“guest”,来访问默认的vhost。

三,安装

这里我采用 docker 容器化引擎部署,使用 docker-compose 命令行工具,定义和运行应用程序中的各个服务:

docker-compose.yml

version: '3'
services:
  rabbitmq:
    image: rabbitmq:management-alpine
    container_name: rabbitmq
    environment:
      # 用户名
      - RABBITMQ_DEFAULT_USER=admin
      # 密码
      - RABBITMQ_DEFAULT_PASS=admin
    # restart: always
    volumes:
      - ./data-in-docker:/var/lib/rabbitmq/
    ports:
      - "15672:15672"
      - "5672:5672"

当前的 latest 版本为 RABBITMQ_VERSION=3.7.17

docker-compose up -d

等待下载完镜像并启动后,打开 rabbitMQ 的 web 控制台 http://localhost:15672/

本人部署在虚拟机中,所以使用本虚拟机 ip 192.168.159.129

使用我们设置的用户名和密码即可登录进去

为您推荐与 rabbitmq 相关的帖子:

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册