Docker安装RabbitMQ AMQP协议及重要角色

 更新时间:2023年05月10日 10:25:33   作者:stark张宇  
这篇文章主要为大家介绍了Docker安装RabbitMQ AMQP协议和主要角色详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

概述

不管是微服务还是分布式的系统架构中,消息队列中间件都是不可缺少的一个重要环节,主流的消息队列中间件有RabbitMQ、RocketMQ等等,从这篇开始详细介绍以RabbitMQ为代表的消息队列中间件。

AMQP协议

  • AMQP协议是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。
  • AMQP协议是一种二进制协议,提供客户端应用与消息中间件之间的异步、安全、高效的交互。
  • AMQP作为中间层服务,把消息生产和消费分隔开来,当消费者产生出现异常,不影响消费者对消息的消费,当消费者异常时,生产者生产的消息可以存放到服务的内存或者磁盘,不会影响想消费的速率,同时,消息也可以基于路由的规则可以投递到指定的消费者消费。

AMQP协议重要角色

1.生产者和消费者

  • 生产者是生产消息的主体,消费者是消费消息的主体
  • 数据集成与系统解耦、异步处理与事件驱动、流量薛峰、事务消息与分布式事务的最终一致
  • 生产者生产一条消息丢给消息代理,消息代理根据投递规则将消息传到消费者手上

2.交换机

  • 交换机就像是消息代理的路由器,负责拿到一个消息之后,根据确定的规则(路由键)将它路由给一个或零个队列,交换机具备多种路由模式。
  • 基于消息生产者和路由规则可以将消息投递到指定的Message Queue,交换机收到生产者投递的消息,基于路由规则及队列绑定关系匹配到投递对应的交换机或者队列进行分发,交换机不存储消息,只做转发

交换机类型:

  • 直连交换机:根据路由键完全匹配的投递到对应的队列
  • 扇形交换机:无视路由键,将消息进行拷贝,并路由到给绑定到它身上所有队列,提供了一个广播的效果。
  • 主题交换机:根据路由键按模式匹配的投递到对应的队列
  • 交换机也具备自己的属性,可以定义自己的名字,是否持久化等选项。

3.队列

  • 队列是消息的暂存地,至少有一个消费者订阅了队列的话,消息会立即发送给这些订阅的消费者,但是如果消息到达了无人的订阅队列,消息会在队列中等待,等待有了消费者便进行分发。
  • Exchange和Message Queue之间存在绑定关系,消息到了Exchange 后基于路由策略可以将消息投递到已绑定且符合路由策略的Message Queue。
  • 消息队列会将消息存储到内存或者是磁盘中,并将这些消息按照一定顺序转发给一个或多个消费者,每个消息队列都是独立隔离的,相互不影响。
  • 消息队列具有不同的属性(私有、共享、持久化、临时、客户端定义或者服务端定义等)),可以基于实际需求选择对应的类型

4.消息

  • 消息是信息的载体,也是AMQP协议的一个实体,消息包含两部分
  • 载荷:就是真正的信息,是你想要传输的任何内容,该部分内容对消息代理来说是透明的
  • 元信息:包含路由键、内容类型、编码、是否持久化等消息属性,会被消息代理所解析,消息代理根据消息的属性对这条消息进行投递,存储等,这部分被消息代理所关系,而消费者对其是不关心的。

5.信道

  • 网络信道,是建立在Connection链接之上的一种轻量级的链接,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可以建立对各Channel,每个Channel代表一个会话任务。
  • 一个Connection上可以创建任意数量的Channel

Docker安装RabbitMQ

1.查看Docker仓库里的RabbitMQ镜像

# 查询镜像
docker search rabbitmq
# 下载镜像
docker pull rabbitmq

2.启动MQ安装management

如果在云服务上部署需在安全组开通一下端口:15672(UI页面通信口)、5672(client端通信口)、25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT消息队列遥测传输)。

docker run -d --name rabbit -e \
RABBITMQ_DEFAULT_USER=stark -e RABBITMQ_DEFAULT_PASS=1990@stark 
-p 15672:15672 \
-p 5672:5672 \
-p 25672:25672 \
-p 61613:61613 \
-p 1883:1883 rabbitmq:management

使用 http://127.0.0.1:15672访问,账号和密码就是参数RABBITMQ_DEFAULT_USERRABBITMQ_DEFAULT_PASS设置的值。

以上就是 Docker安装RabbitMQ、AMQP协议、和主要角色的详细内容,更多关于 Docker安装RabbitMQ的资料请关注脚本之家其它相关文章!

相关文章

  • Docker中RocketMQ的安装与使用详解

    Docker中RocketMQ的安装与使用详解

    这篇文章主要介绍了Docker中RocketMQ的安装与使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 浅谈Docker-compose中的depends_on顺序的问题解决

    浅谈Docker-compose中的depends_on顺序的问题解决

    本文主要介绍了浅谈Docker-compose中的depends_on顺序的问题解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • 使用Dockerfile制作jdk镜像的详细教程

    使用Dockerfile制作jdk镜像的详细教程

    在Docker的世界里,Dockerfile是一个至关重要的文本文件,它定义了如何构建Docker镜像,通过编写Dockerfile,开发者可以确保他们的应用程序及其依赖项被正确地打包、优化和部署,本文将深入探讨Dockerfile的组成、常用指令以及编写高效Dockerfile的最佳实践
    2024-12-12
  • Docker 1分钟搭建DNS服务器的方法

    Docker 1分钟搭建DNS服务器的方法

    本篇文章介绍了Docker 1分钟搭建DNS服务器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 前端项目容器化Docker打包部署方式详解

    前端项目容器化Docker打包部署方式详解

    这篇文章主要为大家介绍了前端项目容器化Docker打包部署方式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 删除docker images中为none的镜像操作

    删除docker images中为none的镜像操作

    这篇文章主要介绍了删除docker images中为none的镜像操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker导入导出镜像、容器,及启动容器失败的解决过程

    docker导入导出镜像、容器,及启动容器失败的解决过程

    本文介绍了在内网环境下使用Docker进行应用程序部署时遇到的问题以及解决方案,主要通过Docker的镜像和容器导入导出功能,实现了在内网环境下成功部署应用程序,同时,还详细介绍了docker命令的使用方法,包括镜像的导出和导入、容器的导出和导入等
    2025-02-02
  • Docker 给运行中的容器设置端口映射的方法

    Docker 给运行中的容器设置端口映射的方法

    这篇文章主要介绍了Docker 给运行中的容器设置端口映射的方法,详细的介绍了端口映射的概念和方法,具体一定的参考价值,有兴趣的可以了解一下
    2017-11-11
  • docker搭建minio及java sdk使用过程详解

    docker搭建minio及java sdk使用过程详解

    MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件,MinIO使用也非常受欢迎,很多朋友不知道minio如何搭建及java sdk的使用,今天借这篇文章给大家详细介绍下,需要的朋友参考下吧
    2021-09-09
  • docker搭建minio集群的实现示例

    docker搭建minio集群的实现示例

    Docker MinIO集群是一种基于Docker的MinIO分布式存储解决方案,本文主要介绍了docker搭建minio集群的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12

最新评论