参考内容: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. install chrome and chrome driver on ubuntu

    sudo apt install python-minimal # python 2.7.xsudo apt install python-pip # https://www.ubuntuupdate ...

  2. ubuntu16.04 install qtcreator

    1. 安装相关软件,搭建环境 sudo apt install qt-creator sudo apt install qt5-default source python35/bin/activate ...

  3. WinSDK-键盘消息

    一 参考url http://www.cnblogs.com/5iedu/p/4656178.html http://blog.csdn.net/yiyefangzhou24/article/deta ...

  4. 【Windows 7】发现一个奇怪的现象

    最近在Windows7-32位操作系统上发现一个奇怪的现象,不知道64位操作系统上会不会发生这个现象.这个现象就是:如果系统上的一个或多个账户没有设置密码,那么在此条件下终止winlogon.exe进 ...

  5. pycharm 激活码

    http://www.cnblogs.com/itfat/p/9388829.html

  6. redis哨兵架构的基础知识及部署和管理

    一.前言 1.哨兵的介绍 sentinal,中文名是哨兵 哨兵是redis集群架构中非常重要的一个组件,主要功能如下 ()集群监控,负责监控redis master和slave进程是否正常工作 ()消 ...

  7. DocKer 创建容器 镜像端口映射失败

    问题一: 我想使用同一个镜像创建多个容器,并映射端口出现以下错误,该怎么解决? docker: Error response from daemon: driver failed programmin ...

  8. 解决用try except 捕获assert函数产生的AssertionError异常时,导致断言失败的用例在测试报告中通过的问题

    在使用Python3做自动化测试过程中可能会遇到,assert函数不加try  except,就可以正常在报告里体现用例不通过,加上变成通过. 这是因为在使用try except 时,捕获了asser ...

  9. Android 开发 获取设备信息与App信息

    设备信息 设备ID(DeviceId) 获取办法 android.telephony.TelephonyManager tm = (android.telephony.TelephonyManager ...

  10. LeetCode 206. Reverse Linked List倒置链表 C++

    Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...