rabbitmq消息中间件环境配置及原理了解(代码片段)

993089249a 993089249a     2023-04-12     178

关键词:

视频内容,首先视频正在审核,通过了我会贴上来。

技术图片

 

一、Docker 入门

Docker是什么?

   Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任 何流行的 Linux 机器上。

为什么要使用 Docker?

   作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。

更轻松的迁移

   由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记 本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况, 从而不会再出现 「这段代码在我机器上没问题啊]的现象

更轻松的维护和扩展

   Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简 单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应 用服务的镜像制作成本。

更快速的启动时间

   传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒 级的启动时间。大大的节约了开发、测试、部署的时间。

更高效的利用系统资源

   由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。 无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应 用。

对比传统虚拟机总结

技术图片

Docker 的主要用途,目前有三大类。

(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

 

1.1 Centos 安装docker

1、更新update到最新的版本

 yum  update

2、卸载老版本docker

yum  remove docker  docker-common docker-selinux  docker-engine

3、安装需要的软件依赖包

 yum install -y yum-utils  device-mapper-persistent-data lvm2

4、设置yum源

 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5、查看docker版本

yum list docker-ce --showduplicates|sort -r  

6、安装docker

 yum  install  docker-ce-18.03.1.ce -y

7、启动docker

 systemctl start docker

8、加入开机自启

 systemctl enable docker

9、配置国内镜像加速

 vi /etc/docker/daemon.json    "registry-mirrors": ["http://hub-mirror.c.163.com"] 

 

1.2 docker基本概念

Docker 包括三个基本概念:

镜像(Image) 容器(Container) 仓库(Repository)

 

Docker 镜像就是一个只读的模板。

  • 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器。
  • Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用

二、docker服务端及客户端安装

2.1、docker服务端安装

代码如下:

通过docker run 运行的时候会自动到仓库搜索

 docker run -d --name rabbit -p 15672:15672 -p 5672:5672  rabbitmq:management

 

参数说明:

-d 开启守护进程,程序后台运行
-p 15672:15672 : 将主机的15672端口,映射到容器的15672端口,用于外网访问到容器
--name rabbit : 容器名字
通过当前命令,查看容器是否启动,环境是否安装完毕
docker ps -a  

2.2、docker客户端安装

安装 rabbitmq-c,C 与 RabbitMQ 通信需要依赖 rabbitmq-c 库(librabbitmq),具体请看

1、通过git或者wget等方式下载

 git clone git://github.com/alanxz/rabbitmq-c.git
 
 cd rabbitmq-c
 
 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/rabbitmq
 
 cmake --build . --target install

注意路径指定,下载amqp扩展时需要指定路径,同时需要修改安装路径下的lib64为lib,否则php扩展载入的时候找不到扩展

2、接下来就是安装 php amqp 的扩展了

可以通过源码编译安装

wget http://pecl.php.net/get/amqp-1.8.0.tgz tar zxvf amqp-1.8.0.tgz cd amqp-1.8.0 /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp  --with-librabbitmq-dir=/usr/local/rabbitmq make && make install
必须指定好 rabbitmq-c文件的安装路径才行,也就是上面安装的时候的路径
最后将‘extension=amqp.so‘加入 php.ini

三、AMQP协议的认识

 RabbitMQ Server:也叫broker server,它是一种传输服务。 他的角色就是维护一条从Producer到Consumer的路线,保证数据能够按照指定的方式进行传输。

技术图片

  • Producer: 消息生产者,如图A、B、C,数据的发送方。消息生产者连接RabbitMQ服务器然后将消息投递到Exchange。
  • Consumer:消息消费者,如图1、2、3,数据的接收方。消息消费者订阅队列,RabbitMQ将Queue中的消息发送到消息消费者。
  • Exchange:生产者将消息发送到Exchange(交换器),由Exchange将消息路由到一个或多个Queue中(或者丢弃)。Exchange并不存储消息。RabbitMQ中的Exchange有fanout、direct、topic、headers四种类型,每种类型对应不同的路由规则,后面详细介绍这四种类型。
  • Queue:(队列)是RabbitMQ的内部对象,用于存储消息。消息消费者就是通过订阅队列来获取消息的,RabbitMQ中的消息都只能存储在Queue中,生产 者生产消息并最终投递到Queue中,消费者可以从Queue中获取消息并消费。多个消费者可以订阅同一个Queue,这时Queue中的消息会被平均分摊给多个 消费者进行处理,而不是每个消费者都收到所有的消息并处理。
  • RoutingKey:生产者在将消息发送给Exchange的时候,一般会指定一个routing key,来指定这个消息的路由规则,而这个routing key需要与Exchange Type 及binding key联合使用才能最终生效。在Exchange Type与binding key固定的情况下(在正常使用时一般这些内容都是固定配置好的),我们的生产者就可 以在发送消息给Exchange时,通过指定routing key来决定消息流向哪里。RabbitMQ为routing key设定的长度限制为255 bytes。
  • Connection:(连接)Producer和Consumer都是通过TCP连接到RabbitMQ Server的。以后我们可以看到,程序的起始处就是建立这个TCP连接。
  • Channels:(信道)它建立在上述的TCP连接中。数据流动都是在Channel中进行的。也就是说,一般情况是程序起始建立TCP连接,第二步就是建立这个 Channel。

推荐教程

基础:

手把手教你写留言板系统av78744637

HTML+PHP+Mysql实现网站注册登录av78785761

php从零教学支付技术大通关Av78773453

零基础小白两小时入门PHP基础语法av81031138

两小时熟练PHP基础语法八大数据类型av81050275

PHP黄金搭档mysql数据库两小时基础入门av81142395

PHP微信扫码支付从入门到实战av83815575

PHP微信支付从入门到实战教程av83707632

教你如何用laravel开发支付宝接口av77424057

php扩展开发:

PHP扩展开发——cookie与session原理实战av83825917

php扩展开发——验证码开发av83864077

 

tp:

TP5开发大型ERP核心系统Auth认证组件av80969844

女神老师讲解thinkphp6支付大通关av79763622

 

redis:

redis从入门到精通实战教程av83679805

9年架构师教你用redis实现高并发限流av94478592

9年架构师教你用redis实现高并发秒杀av94926372

9年架构师讲解redis高并发秒杀解决方案av95010886

 

swoole:

PHP—swoole通往大神修炼之路:av77924246

手把手教你用swoole+websocket实现户外监控直播(总集篇):av79087951

教你用swoole开发网络游戏:av79264440

PHP高级技术手写swoole分布式框架:av78383962

PHP高级技术手写swoole分布式框架(二):av78632435

PHP高级技术手写swoole分布式框架(三):av78748923

PHP高级技术手写swoole分布式框架(框架优化):av78856427

PHP高级技术手写swoole分布式框架(分布式RPC):av79012272

用swoole实现消息推送:av79874641

swoole+docker+redis主从复制及读写分离av78781841

加薪、涨分利器-Swoole-Go协程+Mysql8.0实现高性能数据库连接池:av93991412

 

更多学习内容请访问:

怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)?zhuanlan.zhihu.com技术图片

rabbitmq基础概念详解——环境配置及模拟生产者和消费者简单消息发送(代码片段)

...Mq 是实现了高级消息队列协议(AMQP)的开源消息代理中间件。消息队列是一种应用程序对应用程序的通行方式,应用程序通过写消息,将消息传递于队列,由另一应用程序读取完成通信。而作为中间件的RabbitMq无疑是目前最... 查看详情

一篇了解rabbitmq(代码片段)

文章目录消息中间件引言1.消息队列概述2.消息队列应用场景2.1.异步处理2.2.应用解耦2.3.流量削峰2.4.日志处理2.5.消息通讯3.消息中间件示例3.1.电商系统3.2.日志收集系统4.MQ选型对比文档RabbitMQ基础1.RabbitMQ初识1.1.RabbitMQ简介1.2.消息... 查看详情

rabbitmq简介及部署群集(代码片段)

...协议(AMQP)的开源消息代理软件(也可称为面向消息的中间件)。支持Windows、Linux/Unix、MACOSX操作系统和包括JAVA在内的多种编程语言。AMQP,即AdvancedMessageQueuingProtocol,一个提供统一消息服务的应用层标准高级消息队列协议,是... 查看详情

rabbitmq消息队列集群配置(代码片段)

RabbitMQ是什么?MQ(MessageQueue,消息队列)消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息同步。原理介绍rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbit... 查看详情

rabbitmq消息队列集群配置-1(代码片段)

RabbitMQ是什么?MQ(MessageQueue,消息队列)消息中间件,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息同步。原理介绍rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以rabbit... 查看详情

rabbitmq集群部署及配置

消息中间件rabbitmq,一般以集群方式部署,主要提供消息的接受和发送,实现各微服务之间的消息异步。本篇将以rabbitmq+HA方式进行部署。一、原理介绍rabbitmq是依据erlang的分布式特性(RabbitMQ底层是通过Erlang架构来实现的,所以r... 查看详情

rabbitmq发布订阅持久化(代码片段)

RabbitMQ是一种重要的消息队列中间件,在生产环境中,稳定是第一考虑。RabbitMQ厂家也深知开发者的声音,稳定、可靠是第一考虑,为了消息传输的可靠性传输,RabbitMQ提供了多种途径的消息持久化保证:Exchange持久化、Queue持久... 查看详情

rabbitmq环境搭建(代码片段)

...bitMQ:使用Erlang语言实现的AMQP开源版本RabbitMQ是面向消息的中间件,是实现了高级消息队列协议AMQP的开源消息代理软件RabbitMQ是使用Erlang语言编写的,集群和故障转移是构建在开放电信平台框架上的主要的编程语言都有与代理接口通... 查看详情

rabbitmq环境搭建(代码片段)

...bitMQ:使用Erlang语言实现的AMQP开源版本RabbitMQ是面向消息的中间件,是实现了高级消息队列协议AMQP的开源消息代理软件RabbitMQ是使用Erlang语言编写的,集群和故障转移是构建在开放电信平台框架上的主要的编程语言都有与代理接口通... 查看详情

yum安装rabbitmq3.6.11与erlange20配置及优化

...队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订... 查看详情

rabbitmq事务和confirm发送方消息确认

RabbitMQ事务和Confirm发送方消息确认——深入解读RabbitMQ系列文章RabbitMQ在Ubuntu上的环境搭建深入了解RabbitMQ工作原理及简单使用RabbitMQ交换器Exchange介绍与实践RabbitMQ事务和Confirm发送方消息确认——深入解读使用Docker部署RabbitMQ集群... 查看详情

rabbitmq(代码片段)

Rabbitmq一为什么使用MQ?消息队列的缺点中间件什么是中间件为什么需要使用消息中间件中间件的特点消息中间件的本质及设计RabbitMQRabbitMQ是什么RabbitMQ的特点AMQP是什么?RabbitMQ如何保证消息的可靠性?RabbitMQ如何保证... 查看详情

深入了解rabbitmq(代码片段)

...协议, 是应用层协议的一个开放标准,为面向消息的中间件设计.AMQP是一个二进制协议,具有多信道,协商式,异步,安全,多平台,高效等优点.RabbitMQ是AMQP协议的Erlang实现.相关概念介绍Connection:连接,一个网络连接,如tcp/ip套接字连接... 查看详情

rocketmq---架构原理及环境搭建(代码片段)

...高性能和可靠性,万亿级容量和灵活的可伸缩性。跟其它中间件相比,RocketMQ的特点是纯JAVA实现,在发生宕机和其它故障时消息丢失率更低。它由四个部分组成:nameserver,broker,生产者和消费者。它们中的每一个都可以水平扩展... 查看详情

rabbitmqrocketmqkafka三大消息中间件的区别及简单使用(代码片段)

在我的工作生涯中,基本上真正使用过的MQ只有RabbitMQ,像kafka是看视频学过,然后现在基本忘干净了,roketMQ也是现在才开始学,所以先总结一下三大MQ的区别和优缺点,复习一下rabbitMQ和kafka吧。区别通过... 查看详情

springboot:实现rabbitmq消息收发(topicexchange模式)(代码片段)

...#xff08;AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。二、环境... 查看详情

rabbitmq安装与配置(代码片段)

...列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。消息队列是什么消息(Message)是指在应用间传送的数据。消息可以非... 查看详情

rabbitmq基本原理初识

...队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订... 查看详情