RabbitMQ详解(一)------简介与安装(Docker)

RABBITMQ详解(一)------简介与安装(DOCKER)

刚刚进入实习,在学习过程中没有接触过MQ,RabbitMQ 这个消息中间件,正好公司最近的项目中有用到,学习了解一下.

首先什么是MQ:

MQ(message queue) : MQ是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求。

MQ基本概念:

  1. 消息(Message)

    消息是MQ中最小的概念,本质上就是一段数据,它能被一个或者多个应用程序所理解,是应用程序之间传递的信息载体.

  2. 队列(Queue)
    1. 本地队列

      本地队列按照功能可划分为初始化队列,传输队列,目标队列和死信队列.

      1. 初始化队列用作消息触发功能.
      2. 传输队列只是暂存待传的消息,条件许可的情况下,通过管道将消息传送到其他队列管理器.
      3. 目标队列是消息的目的地,可以长期存放消息.
      4. 如果消息不能送达目标队列,也不能再路由出去,则被自动放入死信队列保存.
    2. 别名队列远程队列

      只是一个队列定义,用来指定远程队列管理器的队列.使用了远程队列,程序就不需要知道目标队列的位置.

    3. 模型队列

      模型队列定义了一套本地队列的属性结合,一旦打开模型队列,队列管理器会按照这些属性动态地创建出一个本地队列.

  3. 队列管理器(Queue Manager)

    队列管理器是一个负责向应用程序提供消息服务的机构,如果把队列关系器比作数据库,那么队列就是其中的一张表.

  4. 通道(Channel)

    通道是两个管理器之间的一种单向点对点的通信连接,如果需要双向交流,可以建立一对通道.

  5. 监听器(Listener)

MQ产品的特性:

  1. 可靠性传输

    对于应用来说,只要成功把数据提交给消息中间件,那么关于数据可靠传输的问题就由消息中间件来负责.

  2. 不重复传输

    不重复传输就是断点续传的功能,特别适合网络不稳定的环境,节约网络资源.

  3. 异步性传输

    异步性传输是指,接受消息双方不必同时在线,具有脱机能力和安全性.

  4. 消息驱动

    接到消息后主动通知消息接收方.

  5. 支持事务

    目前MQ也广泛被一些企业用于分布式事务的同步.

常用的场景:

  1. 消息通道
  2. 消息总线机制

    在如今的SOA架构或者微服务架构中,普遍使用.各个服务之间的通信,可以确保数据的一致性.

常见的MQ对比:

见此处


RabbitMQ

话题回归.RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用Erlang实现的工业级消息队列(MQ)服务器.

  1. AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制.
  2. 开源.
  3. 使用Erlang语言编写,这是一种面向并发的编程语言,目的是创造一种可以应对大规模并发活动的编程语言和运行环境.

安装

  1. 安装Docker.
  2. Docker搜索Rabbitmq镜像.
    docker search rabbitmq
    

  3. 我们选择官方版本的,也就是第一个.通过这个镜像创建的容器需要我们额外打开web management的插件,若不想手动开启,可下载 rabbitmq/management

    docker pull rabbitmq
  4. 镜像下载后,通过该镜像创建一个容器.
    docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rabbitmq rabbitmq:latest

    参数介绍:

    -d:后台运行容器.

    --hostname:指定主机名.

    -p:指定端口映射.

    -v:文件目录映射.

    --name:定义容器名称.

  5. 查看日志.
    docker logs my_rabbitmq
  6. 如果使用的镜像为rabbitmq/management,到此步可直接浏览器访问localhost:15762;若使用rabbitmq镜像,我们需要进入docker,开启rabbitmq-management插件.
    docker exec -it my_rabbitmq /bin/bashls
    
    

    可以看到有plugins插件的目录,我们需要用到的插件都在里面,使用命令即可开启插件.

    cd pluginsrabbitmq-plugins enable rabbitmq_management

  7. 这样,我们在本地就可以打开浏览器访问localhost:15762,便可以看到Rabbit的页面了.其中用户名和密码都是guest.

原文地址:https://www.cnblogs.com/Alva-mu/p/9487459.html

时间: 2024-10-07 05:12:41

RabbitMQ详解(一)------简介与安装(Docker)的相关文章

ITEXT 使用详解-01 简介与安装

1pdf简介 2为什么使用itext 现在网页大多提供下载,自动生成pdf 表单的功能. itext 这个api 很好的解决对pdf处理的难题. 简化了对pdf的处理. itext 就是一个用于创建,修改,生成pdf的一个JAVA 组件.可以通过这个itext jar 用于显示报表,修改pdf 内容,通过java 代码自动填充报表等一系列功能. 3 安装 1,首先下载这个itext jar 文件.下载链接如下 http://sourceforge.net/projects/itext/files

RabbitMQ详解(二)------消息通信的概念

RabbitMQ详解(二)------消息通信的概念 消息通信,有很多种,邮箱 qq 微信 短信等,这些通信方式都有发送者,接受者,还有一个中间存储离线消息的容器.但是这些通信方式和RabbitMQ的通信模型是不一样的,比如邮件,邮件服务器基于POP3/SMTP协议,通信双方需要明确指定,并且发送的邮件内容有固定的结构.而RabbitMQ服务器基于AMQP协议,这个协议是不需要明确指定发送方和接受方的,而且发送的消息也没有固定的结构,甚至可直接存储二进制数据,并且和邮件服务器一样,也能存储离线消

详解npm的模块安装机制

详解npm的模块安装机制 依赖树表面的逻辑结构与依赖树真实的物理结构 依赖树表面的逻辑结构与依赖树真实的物理结构并不一定相同! 这里要先提到两个命令:tree -d(linux)和npm ls(npm) 在一个npm项目下: tree -d命令以树状图的方式列出一个项目下所有依赖的物理结构 npm ls命令以树状图的方式列出一个项目下所有依赖的逻辑结构 以官方文档为例子: 项目example1有两个依赖模块:mod-a模块和mod-c模块: mod-a模块有一个依赖模块[email protec

RabbitMQ详解(一)------简介与安装

RabbitMQ 这个消息中间件,其实公司最近的项目中有用到,但是一直没有系统的整理,最近看完了<RabbitMQ实战  高效部署分布式消息队列>这本书,所以顺便写写. 那么关于 RabbitMQ 是什么?大家可以首先参考官网:http://www.rabbitmq.com .这里我大概的介绍一下: RabbitMQ  是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器

.Net使用RabbitMQ详解

RabbitMQ简介 必须一提的是rabbitmq是由LShift提供的一个消息队列协议(AMQP)的开源实现,由以高性能.健壮以及可伸缩性出名的Erlang写成(因此也是继承了这些优点). 百度百科对RabbitMQ阐述也非常明确,建议去看下,还有amqp协议. RabbitMQ官网:http://www.rabbitmq.com/ 如果你要下载安装,那么必须先把Erlang语言装上. RabbitMQ的.net客户端,可以在nuget中输入rabbitmq轻松获得. RabbitMQ与其他消

springcloud -- sleuth+zipkin整合rabbitMQ详解

为什么使用RabbitMQ? 我们已经知道,zipkin的原理是服务之间的调用关系会通过HTTP方式上报到zipkin-server端,然后我们再通过zipkin-ui去调用查看追踪服务之间的调用链路.但是这种方式存在一个隐患,如果微服务之间与zipkin服务端网络不通,或调用链路上的网络闪断,http通信收集方式就无法工作.而且zipkin默认是将数据存储在内存中的,如果服务端重启或宕机,就会导致数据丢失. 所以我们不仅将数据存储在zipkin-serve中,同时还能通过某个消息存储的容器将本

Linux下安装MyEclipse和Tomcat服务器详解,以及我安装过程中所出现的问题以及解决办法,并实现一个web小程序

1.首先,先要去MyEclipse和Tomcat的官网去下载Linux版的压缩文件,而MyEclipse的中文官网是需要登录并有可能要付钱,大家可以去网上下载,还有就是Tomcat的linux版,这个直接上官网就可以下载了,下载后我还是通通把它们放在我E盘下的as目录底下,如果大家还没配置好jdk,即Java环境的话,可看我这篇文章:http://blog.csdn.net/u012561176/article/details/45119047 这里我就直接进行操作了! 我E盘下的as文件夹

SpringBoot ( 八 ) :RabbitMQ 详解

原文出处: 纯洁的微笑 RabbitMQ 即一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息中间件在互联网公司的使用中越来越多,刚才还看到新闻阿里将RocketMQ捐献给了apache,当然了今天的主角还是讲RabbitMQ.消息中间件最主要的作用是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的.在分布式的系统中,消息队列也会被用在很多其它的方

Gentoo安装详解(一) -- 安装基本系统

前期准备 远程登录: 开启ssh服务: /etc/init.d/sshd start 设置密码: passwd 以便使用putty.ssh client远程登录上传stage等(有时在线下载很慢,而局域网上传很快) 准备磁盘: 分区: fdisk /dev/sda /dev/sda1 : /boot 100M(32-100M) 设启动笔记-a /dev/sda2 : / 20G /dev/sda3 : /home 20G /dev/sda5 : /swap 1G (内存< 512 MB,分区分配