消息中间件 rabbitMQ
参考内容: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的更多相关文章
- 分布式系统之消息中间件rabbitmq
分布式系统之消息中间件rabbitmq 博客分类: 感谢: 一般php 用rabbitmq java 用activemq http://spartan1.iteye.com/blog/11802 ...
- 分布式系统消息中间件——RabbitMQ的使用基础篇
分布式系统消息中间件——RabbitMQ的使用基础篇
- 分布式系统消息中间件——RabbitMQ的使用思考篇
分布式系统消息中间件--RabbitMQ的使用思考篇 前言 前面的两篇文章分布式系统消息中间件--RabbitMQ的使用基础篇与分布式系统消息中间件--RabbitMQ的使用进阶篇,我们简单介 ...
- 分布式系统消息中间件——RabbitMQ的使用进阶篇
分布式系统消息中间件--RabbitMQ的使用进阶篇 前言 上一篇文章 (https://www.cnblogs.com/hunternet/p/9668851.html) 简单总结了分布式系 ...
- 消息中间件——RabbitMQ(一)Windows/Linux环境搭建(完整版)
前言 最近在学习消息中间件--RabbitMQ,打算把这个学习过程记录下来.此章主要介绍环境搭建.此次主要是单机搭建(条件有限),包括在Windows.Linux环境下的搭建,以及RabbitMQ的监 ...
- 消息中间件——RabbitMQ(三)理解RabbitMQ核心概念和AMQP协议!
前言 本章学习,我们可以了解到以下知识点: 互联网大厂为什么选择RabbitMQ? RabbiMQ的高性能之道是如何做到的? 什么是AMQP高级协议? AMQP核心概念是什么? RabbitMQ整体架 ...
- 消息中间件——RabbitMQ(四)命令行与管控台的基本操作!
前言 在前面的文章中我们介绍过RabbitMQ的搭建:RabbitMQ的安装过以及各大主流消息中间件的对比:,本章就主要来介绍下我们之前安装的管控台是如何使用以及如何通过命令行进行操作. 1. 命令行 ...
- 消息中间件——RabbitMQ(五)快速入门生产者与消费者,SpringBoot整合RabbitMQ!
前言 本章我们来一次快速入门RabbitMQ--生产者与消费者.需要构建一个生产端与消费端的模型.什么意思呢?我们的生产者发送一条消息,投递到RabbitMQ集群也就是Broker. 我们的消费端进行 ...
- 消息中间件——RabbitMQ(六)理解Exchange交换机核心概念!
前言 来了解RabbitMQ一个重要的概念:Exchange交换机 1. Exchange概念 Exchange:接收消息,并根据路由键转发消息所绑定的队列. 蓝色框:客户端发送消息至交换机,通过路由 ...
- 消息中间件——RabbitMQ(七)高级特性全在这里!(上)
前言 前面我们介绍了RabbitMQ的安装.各大消息中间件的对比.AMQP核心概念.管控台的使用.快速入门RabbitMQ.本章将介绍RabbitMQ的高级特性.分两篇(上/下)进行介绍. 消息如何保 ...
随机推荐
- HTML5 新的 Input 类型
Input 类型: color(拾色器) color 类型用在input字段主要用于选取颜色,如下所示: 支持浏览器 实例 从拾色器中选择一个颜色: 选择你喜欢的颜色: <input type= ...
- maven向本地仓库导入jar包
如果maven工程的依赖jar包在网上找不到,那么只能自己打包,然后传到本地仓库,可以使用如下命令 mvn install:install-file -DgroupId=com.redis.redis ...
- 三个线程,ABC 10次(volatile+synchronized)
package ThreadABC; public class Share { private volatile int status; public int getStatus() { return ...
- WordPress版微信小程序3.0版发布
距离WordPress版微信小程序上一个版本的发布过去了一个月了.在此间,我的工作有些变化,加上正在开发新版本,目前开源版的完善和升级稍稍有些滞后. 虽然这个版本是3.0版,期间有个过渡的2.8版,不 ...
- Windows下虚拟机安装Mac OS X —– VMware Workstation12安装Mac OS X 10.11
1下载 镜像:Instal OS X Yosemite 10.10.3(14D131).cdr 密码:qhhm 2 unlocker208文件(链接:https://pan.baidu ...
- struct 对齐和补齐原则
// 对齐原则:每一成员需对齐为后一成员类型的倍数 // 补齐原则:最终大小补齐为成员类型最大值的倍数 struct A { int a; // 4 short b; // (4) + ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.3
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- php的运行流程
1.Zend引擎:Zend整体用纯C实现,是PHP的内核部分,他将PHP代码翻译(词法.语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法.实现了基本的数据结构(如:hashta ...
- 影响solr性能的一些因素(附使用经验)
Solr本身的性能不错,但是在使用过程中,还是会遇到一些使用错误,或是没考虑到的地方:在出现瓶颈时,可以首先考虑哪些点呢?下面就来看一下Solr官方的总结,个人觉得总结的很好.SOLR+LUCENE的 ...
- vue登录注册及token验证
// router.jsimport Vue from 'vue'import VueRouter from 'vue-router' Vue.use(VueRouter) const routes ...