文档章节

rabbitmq学习(一)

hensemlee
 hensemlee
发布于 10/18 21:25
字数 1158
阅读 7
收藏 0

RabbitMQ是目前非常热门的一款消息中间件,具有高可靠、易拓展、高可用及丰富的功能

1.什么是消息中间件

消息是指在应用间传送的数据。包含文本字符串、JSON、内嵌对象

消息队列中间件(消息中间件或消息队列)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式下扩展进程间的通信

两种传递模式:点对点(P2P,Point-to-Point)模式、发布订阅模式(Pub/Sub)

点对点模式基于队列,消息生产者发送消息到队列,消息消费者从队列中接受消息

发布订阅模式模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称为主题,消息发布者将消息发布到某个主题,而消息订阅者则从主题中订阅消息,发布订阅模式在消息的一对多广播时采用

2.消息中间件的作用

解耦:

冗余(存储):有些情况下,处理数据的过程会失败,消息中间件可以把数据进行持久化直到它们已经被处理,通过这一方式规避了数据丢失风险

扩展性:消息中间件解耦了应用的处理过程,所以提高消息入队和处理的效率是很容易的,只要另外增加处理过程即可,不需要改变代码,也不需要调节参数

削峰:在访问量剧增的情况下,应用仍然需要继续发挥,但是这样的突发流量并不常见。如果以能处理这类峰值为标准而投入资源,无疑是巨大的浪费。

可恢复性:消息中间件降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入消息中间件中的消息仍然可以在系统恢复后进行处理

顺序保证性:在大多数使用场景下,数据处理的顺序很重要,大部分消息中间件支持一定程度上的顺序性

缓冲:在任何重要的系统中,都会存在需要不同处理时间的元素。消息中间件通过一个缓冲层来帮助任务最高效率地执行,写入消息中间件的处理会尽可能快速。该缓冲层有助于控制和优化数据流经过系统的速度

异步通信:在很多时候应用不想也不需要立即处理消息。消息中间件提供了异步处理机制,允许应用把一些消息放入消息中间件中,但不立即处理它,在之后需要的时候再慢慢处理

3.rabbitmq的起源

rabbitmq是采用erlang语言实现AMQP(Advanced Message Queuing Protocol)的消息中间件。

4.rabbitmq的安装

系统环境:

CentOS 7.5

erlang:R16B03-1

rabbitmq:rabbitmq-server 3.6.8

安装所需各种类库:

为了避免安装出问题先把各种类库安装

yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel

erlang安装:

rabbitmq依赖erlang,需要安装erlang,为了方便利用yum命令安装即可:yum install erlang

输入erl验证是否安装成功,进入Erlang后可以使用如下命令退出Erlang:q().

rabbitmq安装:

wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_8/rabbitmq-server-generic-unix-3.6.8.tar.xz
tar xvf rabbitmq-server-generic-unix-3.6.8.tar.xz -C /opt
mv rabbitmq_server-3.6.8 rabbitmq

修改/etc/profile文件,添加下面的环境变量:

erport PATH=$PATH:/opt/rabbitmq/sbin

erport RABBITMQ_HOME=/opt/rabbitmq

5.rabbitmq的运行

启动:

rabbitmq-server [-detached]

默认情况下,访问rabbitmq服务的用户名和密码是guest和guest,且无法远程访问,需添加新用户

添加新用户:

添加用户名为root密码为root的用户

rabitmqctl add_user root root

为root用户设置所有权限:

rabbitmqctl set_permissions -p / root "." "." ".*"

设置root用户为管理员角色

rabbitmqctl set_user_tags root administrator

开启web管理界面:

rabbitmq-plugins enable rabbitmq_management

浏览器输入 http://你的远程服务器IP:15672/ 用root登录即可

© 著作权归作者所有

共有 人打赏支持
hensemlee
粉丝 8
博文 65
码字总数 43176
作品 0
徐汇
程序员
私信 提问
Rabbitmq学习之路2-rabbitmqctl

学习rabbitmq,原理之后第一个要掌握的就是rabbitmqctl这个命令的用法了,rabbitmq的管理功能最全的就是rabbitmqctl命令了,当然还有HTTP API和UI两种管理手段。 rabbitmqctl的使用方法: ra...

China_OS
2013/12/21
0
0
PHP版 RabbitMQ官方中文入门教程

工作中用到 RabbitMQ,但是RabbitMQ官方的 Tutorials 是英文Python和Jave的,官网的教程很好,正好最近业余在撸Python,所以直接来搞个PHP版本的,仅供PHP菜鸟一起来入门学习,如有错误和问题...

Yuansir
2013/06/03
0
0
(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景

本篇并没有直接讲到技术,例如没有先写个Helloword。我想在选择了解或者学习一门技术之前先要明白为什么要现在这个技术而不是其他的,以免到最后发现自己学错了。同时如果已经确定就是他,最...

Super_RD
2017/04/18
0
0
CentOS 6.4下Rabbitmq安装

在 CentOS 6.4上安装python* 注意啊,自己手动安装python2.7.5,不要动系统上面其他的版本 yum install zlib yum install zlib-devel 下载python-2.7.6.tar.gz文件 tar -xzvf python-2.7.6.t...

mac_zhao
2014/09/26
0
0
RabbitMQ安装(CentOS 7 64位)

一、安装Erlang 详细的安装介绍在这里(https://www.erlang-solutions.com/downloads/download-erlang-otp) wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rp......

nibilly
2015/04/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(二)之netty服务端启动(上)

上一章 中的标准netty启动代码中,ServerBootstrap到底是如何启动的呢?这一章我们来瞅下。 server.group(bossGroup, workGroup);server.channel(NioServerSocketChannel.class).optio...

天空小小
今天
2
0
聊聊storm trident batch的分流与聚合

序 本文主要研究一下storm trident batch的分流与聚合 实例 TridentTopology topology = new TridentTopology(); topology.newStream("spout1", spout) .p......

go4it
昨天
3
0
3分钟总结Mybatis别名

1.系统内置别名: 把类型全小写(resultType/paramType) 2.给某个类起别名 2.1 alias=”自定义” <typeAliases> <typeAlias type="com.bjsxt.pojo.People" alias="peo"/> </typeAli......

KingFightingAn
昨天
2
0
JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
昨天
8
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部