参考内容:https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html

一、什么是RabbitMQ

RabbitMQ是一个由erlang 开发的AMQP(Advanced Message Queue)的开源实现。RabbitMQ是由 RabbitMQ Technologies Ltd 开发并技工技术支持。

erlang: 是一种通用的面向并发的编程语言,最早是由爱立信专门为通信应用设计的,控制交换机或者变换协议等。

二、原理

RabbitMQ 基本原理

Queue(队列)

rabbitMQ作用是存储消息,生产者产生消息发送到RabbitMQ内部对象Queue中,而消费者从Queue对列中取得数据

上边 是一个生产者对应一个消费者,当存在多个消费者订阅一个队列时,队列会将消息平分给其他消费者。但是每个消息处理时间不同,导致一些消费者一直忙碌,有些消费者处理完就一直空闲。

RabbitMQ使用 prefetchCount 来限制每次发送给消费者消息个数。

上边 prefetchCount = 1 指的是队列每次发送一条消息,当处理完再发送。

Exchange(交换器)

RabbitMQ 中存在多个队列,那么生产者如何指定消息发送给哪个队列呢?

生产者产生的消息并不是直接发送给Queue 的,而是经过Exchange,exchange 将消息路由给一个或者多个Queue,不符合路由规则的消息丢掉.

路由如何准确的将消息推送给Queue ? Binding, RabbitMQ 通过Binding 将 Exchange 与Queue 链接再一起,这样就直到要推送的消息去哪个队列

绑定(Binding)

Exchange和Queue的同时,一般会指定一个Binding Key,生产者将消息发送给Exchange的时候,一般会产生一个Routing Key,当Routing Key和Binding Key对应上的时候,

消息就会发送到对应的Queue中去。那么Exchange有四种类型,不同的类型有着不同的策略。也就是表明不同的类型将决定绑定的Queue不同,换言之就是说生产者发送了

一个消息,Routing Key的规则是A,那么生产者会将Routing Key=A的消息推送到Exchange中,这时候Exchange中会有自己的规则,对应的规则去筛选生产者发来的消息,

如果能够对应上Exchange的内部规则就将消息推送到对应的Queue中去。

Exchange Type

1.fanout 将所有发送到exchange  的消息发送到与它绑定的Queue 中

2.direct  发送到所有 binding key 与 routing key 匹配的 Queue

3.topic 模糊匹配发送

4.headers

根据发送消息的 headers 属性进行匹配

三、如何在 windows 上安装 RabbitMQ

安装 rabbitMQ 首先需要安装 erlang opt

1.下载安装 Erlang (安装版)  https://www.erlang.org/downloads

2.下载RabbitMQ(二进制文件或者 window 安装版window  install)https://www.rabbitmq.com/download.html

3.RabbitMQ 默认的端口 :5672 ,激活可视化的插件

切换到rabbitmq sbin 目录下

执行

rabbitmq-plugins.bat  enable  rabbitmq_management

管理员运行dos 执行重启

net stop RabbitMQ && net start RabbitMQ

浏览器查询 http://localhost:15672(需要先创建管理用户,如下)

四、rabbitMQ 创建用户、密码、权限

进入rabbitMQ sbin 目录

1.查看用户

 rabbitmqctl.bat  list_users

2.创建用户

rabbitmqctl.bat add_user  用户名  密码

3.设置管理员

rabbitmqctl.bat set_user_tags  用户名  administrator

消息中间件 rabbitMQ的更多相关文章

  1. 分布式系统之消息中间件rabbitmq

    分布式系统之消息中间件rabbitmq 博客分类: 感谢:  一般php 用rabbitmq  java 用activemq  http://spartan1.iteye.com/blog/11802 ...

  2. 分布式系统消息中间件——RabbitMQ的使用基础篇

    分布式系统消息中间件——RabbitMQ的使用基础篇

  3. 分布式系统消息中间件——RabbitMQ的使用思考篇

    分布式系统消息中间件--RabbitMQ的使用思考篇 前言     前面的两篇文章分布式系统消息中间件--RabbitMQ的使用基础篇与分布式系统消息中间件--RabbitMQ的使用进阶篇,我们简单介 ...

  4. 分布式系统消息中间件——RabbitMQ的使用进阶篇

    分布式系统消息中间件--RabbitMQ的使用进阶篇 前言     上一篇文章 (https://www.cnblogs.com/hunternet/p/9668851.html) 简单总结了分布式系 ...

  5. 消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)

    前言 最近在学习消息中间件--RabbitMQ,打算把这个学习过程记录下来.此章主要介绍环境搭建.此次主要是单机搭建(条件有限),包括在Windows.Linux环境下的搭建,以及RabbitMQ的监 ...

  6. 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!

    前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...

  7. 消息中间件——RabbitMQ(四)命令行与管控台的基本操作!

    前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作. 1. 命令行 ...

  8. 消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!

    前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker. 我们的消费端进行 ...

  9. 消息中间件——RabbitMQ(六)理解Exchange交换机核心概念!

    前言 来了解RabbitMQ一个重要的概念:Exchange交换机 1. Exchange概念 Exchange:接收消息,并根据路由键转发消息所绑定的队列. 蓝色框:客户端发送消息至交换机,通过路由 ...

  10. 消息中间件——RabbitMQ(七)高级特性全在这里!(上)

    前言 前面我们介绍了RabbitMQ的安装.各大消息中间件的对比.AMQP核心概念.管控台的使用.快速入门RabbitMQ.本章将介绍RabbitMQ的高级特性.分两篇(上/下)进行介绍. 消息如何保 ...

随机推荐

  1. 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二

    上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...

  2. 一个HTTP打趴80%面试者

    面试多年,每当我问起面试者对HTTP的了解时,个个回答令我瞠目结舌,这些开发者都有3-5年的经验.请不要让我叫你野生程序员,是时候了解HTTP了,让我们当个正规军. 起因 面试官:请问你了解HTTP协 ...

  3. Intellij idea使用过程中遇到的一些问题

    问题:使用maven命令时,在报错信息里中文乱码,比如一些数据库配置报错什么的,是中文报错,设置里该设置为UTF-8的都设置了. 解决方法:idea.exe.vmoptions里增加-Dfile.en ...

  4. HTML 理解标签 - meta

    meta标签 , 常用的有以下几个属性: 1. name : 比较常见的一些属性 author: 就是这个文档的作者名称,可以用自由的格式去定义 description: 包括一个关于页面内容的缩略而 ...

  5. Wow64(32位进程)注入DLL到64位进程

    转载自: https://blog.poxiao.me/p/wow64-process-inject-dll-into-x64-process/ 向其他进程注入DLL通常的做法是通过调用CreateR ...

  6. 关于shiro安全框架实现同一用户同一时刻仅可在一个地址登录的技术实现

    首先,我们要说明一下,本技术点的开发背景是shiro与springMvc结合环境下的开发方式. 由于shiro把用户登录后的信息都存在了自己封装的session中,所以要实现单一地址登录,我们需要关注 ...

  7. linux Ubuntu 16.04安装 postgresql

    两次的重装系统安装数据库折磨的死去活来. 安装步骤: 1,运行  sudo apt-get update     --这个用来查找数据源 2 ,运行  apt install postgresql  ...

  8. 如何在vue+element中实现选择框和穿梭框的根据拼音以及拼音首字母以及汉字的模糊搜索

    1.汉字: 直接添加对应的 filterable     2.拼音: 穿梭框和选择器的实现方式有所不同   选择器:   <1>下载pinyin-match:   npm i --save ...

  9. DevExpress 折线图和柱状图的绘制与数据绑定

    DevExpress 组件是一个非常丰富和强大的组件,适合各种可视化图形的绘制与展示,在数据分析展示中是个很有帮助的,网上也有很多关于这方面的文章,关于折线图或柱状图的画法,以下是自己在工作中接触到的 ...

  10. 文件服务之二:ftp协议

    FTP连接 命令连接 传输命令(客户端发给服务端的命令),服务端的21/tcp 数据连接 传输数据(传输数据时建立,数据传输完拆除) 数据链接的建立方法:主动.被动 主动模式(PORTstyle服务器 ...