1、RabbitMQ基本原理

1、MQ全称Message Queue,是一种分布式应用程序的通信方法,是消费-生产者模型的典型代表,producer向消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列中的消息。业务上可以实现:

(1)项目之间的模块解耦,降低项目耦合度;

(2)实现异步功能,如功能执行成功后发短信、发邮件等,当请求时间过长时,也可用于防止前端请求超时;

(3)并发削峰,针对某一时刻突发性并发,可以先将producer生产的消息发送到队列中,consumer逐一取出消息进行消费,防止项目因并发量大卡顿;

(4)日志处理;

(5)消息通讯。

2、AMQP

RabbitMQ是基于AMQP协议实现的,AMQP相当于一个标准,全称Advanced Message Queue(高级消息队列协议)。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,不受产品、开发语言等条件的限制。

3、vhost

为什么要用虚拟主机?RabbitMQ server 可以说就是一个消息队列服务器实体(Broker),Broker当中可以有多个用户(增加用户的命令),而用户只能在虚拟主机的粒度进行权限控制,所以RabbitMQ中需要多个虚拟主机。每一个RabbitMQ服务器都有一个默认的虚拟主机“/”。

4、Queue

队列是消息通信的基础模块

(1)队列可以存储消息,在consumer未进行消费前,消息可存于队列中;

(2)队列与交换机间通过routing_key绑定后,只能收到与routing_key对应的消息,可以起到消息归类作用。

5、exchange

交换机指定消息按不同的规则路由到不同的队列。可以将其理解成路由表。

交换机可以存在多个,每个交换机在自己独立的进程中运行,增加多个交换机相当于增加多个进程,可以充分利用服务器上的CPU核以便达到更高的效率。

交换机四种类型:

(1)Fanout

广播模式,不需要routing_key将exchange和queue进行绑定,直接将exchange内的消息发送给所有queue,类似微信公众号的订阅功能,只要订阅此公众号,就会收到公众号发布的所有消息

(2)direct

直联模式,通过精确匹配消息的路由关键字,将消息路由到零个或者多个队列中,绑定关键字用来将队列和交换器绑定到一起。这让我们可以构建经典的点对点队列消息传输模型,不过和任何已定义的交换器类型一样,当消息的路由关键字与多个绑定关键字匹配时,消息可能会被发送到多个队列中。

(3)topic

主题模式,处理路由键,按模式匹配路由键。模式符号 "#" 表示一个或多个单词,"*" 仅匹配一个单词。如 "wood.#" 可匹配 "wood.palm.redwood",但 "wood.*" 只匹配 "wood.deadwood"。

主题式交换器类型提供了这样的路由机制:通过消息的路由关键字和绑定关键字的模式匹配,将消息路由到被绑定的队列中。这种路由器类型可以被用来支持经典的发布/订阅消息传输模型——使用主题名字空间作为消息寻址模式,将消息传递给那些部分或者全部匹配主题模式的多个消费者。

(4)headers(未使用过此种模式,略)

6、bind

绑定器可以交换机和队列串联起来,交换机通过绑定器可以将消息路由到指定的队列中,可以将将绑定器理解为路由器的路由规则

7、RabbitMQ特点

(1)可靠性

rabbtimq使用一些机制保证可靠性,防止消息丢失,如:持久化机制、消息确认机制等

(2)集群模式

多个rabbitmq服务器可以组成一个集群,防止服务down掉影响项目运行

(3)高可用

队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用。

(4)管理界面

提供强可视化管理界面,即使不熟悉MQ原理的开发人员也可以通过可视化管理界面进行MQ的相关操作

8、防止消息丢失逻辑图

防止MQ中消息丢失一直被开发人员广泛关注,MQ内部持久化机制可以防止消息丢失,但是同时也会降低MQ性能,因此需要在代码逻辑中进行部分相关处理

2、搭建单机MQ

1、安装erlang

yum -y install erlang 

2、安装rabbitmq

yum install -y rabbitmq-server

3、安装插件

启动web管理界面
rabbitmq-plugins enable rabbitmq_management
 
增加访问用户,默认用户guest只能本地访问。
rabbitmqctl add_user admin 123456
 
设置角色: 
rabbitmqctl set_user_tags admin administrator
 
设置默认vhost(“/”)访问权限
rabbitmqctl set_permissions -p "/" admin "." "." ".*"
 
浏览器访问:http://IP:15672
用户名admin,密码123456进行登录

rabbitmq之基本原理及搭建单机环境的更多相关文章

  1. 零基础学习Mahout之-----搭建单机环境

    一.Mahout是什么? Mahout是Apache的一个开源项目(http://mahout.apache.org/),提供了机器学习领域的若干经典算法,以便开发人员快速构建机器学习和数据挖掘方面的 ...

  2. 在centos7 ubuntu15.04 上通过bosh-lite 搭建单机环境cloudfoundry

    Bosh-lite简介       bosh-lite 是一个单机部署cloudfoundry的实验性工具,用于开发人员做poc 验证.Bosh-lite目前支持仅MAC OS X和Linux系统.B ...

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

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

  4. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_02-Eureka注册中心-搭建Eureka单机环境

    我们先搭建单机环境 govern是治理的意思, 这样就把工程创建好了 创建包 创建SpringBoot的启动类. 在父工程里面已经确定了Spring Cloud的版本了.相当于锁定了版本 接下里只需要 ...

  5. MySQL数据库管理(二)单机环境下MySQL Cluster的安装

    上文<MySQL数据库管理(一)MySQL Cluster集群简单介绍>对MySQL Cluster集群做了简要介绍.本文将教大家一步步搭建单机环境下的MySQL数据库集群. 一.单机环境 ...

  6. 在Windows中单机环境下创建RabbitMQ集群

    本文根据:http://www.360doc.com/content/15/0312/17/20874412_454622619.shtml整理而来 RabbitMQ具有很好的消息传递性能,同时又是开 ...

  7. hbase单机环境的搭建和完全分布式Hbase集群安装配置

    HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库.它是面向列的,并适合于存储超大型松散数据.HBase适合于实时,随机对Big数据进行读写操作的业务环境. @hbase单机环境的搭建 ...

  8. windows7 spark单机环境搭建及pycharm访问spark

    windows7 spark单机环境搭建 follow this link how to run apache spark on windows7 pycharm 访问本机 spark 安装py4j ...

  9. [转载] Hadoop和Hive单机环境搭建

    转载自http://blog.csdn.net/yfkiss/article/details/7715476和http://blog.csdn.net/yfkiss/article/details/7 ...

随机推荐

  1. BFS(广度优先搜索)

    简介 BFS的过程是首先访问起始结点v,接着访问顶点v的所有未被访问的邻接结点,然后对每个继续进行上述步骤,直到所有结点都被访问过为止,当然,在访问过程中,需要使用一个队列,然后类似二叉树的层次遍历来 ...

  2. java多线程 生产者和消费者 lock

    package com.atguigu.thread.lock; import java.util.concurrent.locks.Condition; import java.util.concu ...

  3. Intellij idea 离线安装activiti工作流插件

    想在Intellij idea上安装一个activiti插件玩玩,由于网络环境原因,不能使用网上已有的在线搜索acti bpm并安装的方式.也在网上找了好久没找到离线安装的方式.自己摸索了一下装好了, ...

  4. oracle创建表空间自增长和创建用户

    /* 步骤: 1.创建表空间 2.创建用户 3.用户授权 */ /*创建表空间*/ create tablespace QCJ_TABLESPACE /*表空间物理文件名称*/ datafile 'Q ...

  5. 不同数据库的表迁移SqlServer

    INSERT INTO table  SELECT *  FROM  OPENDATASOURCE ('SQLOLEDB', 'Data Source=172.168.44.146;User ID=s ...

  6. windows凭据管理

    解决windows凭据无法保存的问题1: 运行-gpedit.msc(组策略)-计算机配置-管理模板-系统-凭据分配 双击右侧”允许分配保存的凭据用于仅NTLM服务器身份验证“ 在弹出的窗口中选中“已 ...

  7. 怎么隐藏 iOS Safari 打开网页时的地址栏和工具栏探索

    先来看一张截图 红色框处就是用手机浏览器打开页面时,自动显示出来的头部地址栏和底部工具栏 如果现在有一个需求,用手机浏览器打开页面时,把地址栏和工具栏隐藏,该怎么办呢? 起初我在度娘找到了好几篇博客都 ...

  8. 远程window服务器,无法复制粘贴了

    1.先检查本机 2.检查服务器 win+R打开输入taskmgr 找到这个进程,结束进程 3.在win+r打开输入rdpclip确认启动,发现可以复制粘贴了.

  9. 【朝花夕拾】四大组件之(二)Service篇

    一.Service是什么 对于这个问题,想必大家都能说出一二,如“它是四大组件之一”.“在后台处理一些操作”等.咱们这里看看官方文档中的描述,官方语言一般都是准确且言简意赅的,这里可以体验一下其风格. ...

  10. ZooKeeper 02 - ZooKeeper集群的节点为什么是奇数个

    目录 1 关于节点个数的说明 2 ZooKeeper集群的容错数 3 ZooKeeper集群可用的标准 4 为什么不能是偶数个节点 4.1 防止由脑裂造成的集群不可用 4.2 奇数个节点更省资源 4. ...