RabbitMQ培训
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Rabbit MQ 原理分析
谈到RabbitMQ,首先要谈到MQ和AMQP。
MQ全称为Message Queue, 消息队列(MQ)是一 种应用程序对应用程序的通信方法。应用程序通过写 和检索出入列队的针对应用程序的数据(消息)来通 信,而无需用专用连接来链接它们。
AMQP:Advanced Message Queuing Protocol,高级消息队列协 议,是应用层协议的一个开放标准,为面向消息的中间件设计。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/ 订阅)、可靠性、安全性要求很严格。
6. producer:消息生产者,就是投递消息的程序。 7. consumer:消息消费者,就是接受消息的程序。 8. channel:消息通道,在客户端的每个连接里,可建立多个 channel,每个channel代表一个会话任务。
消息队列的使用过程大概如下:
(1)客户端连接到消息队列服务器,打开一个channel。 (2)客户端声明一个exchange,并设置相关属性。 (3)客户端声明一个queue,并设置相关属性。 (4)客户端使用routing key,在exchange和queue之间建立好绑 定关系。 (5)客户端投递消息到exchange。
Rabbit MQ部署与基本操作
一、Rabbit MQ环境安装: 1、安装Erlang
rpm –ivh erlang-18.1-1.el6.x86_64.rpm 2、安装RabbitMQ
rpm –ivh rabbitmq-server-3.5.6-1.noarch.rpm 3、开放端口5672
Iptables -A INPUT -p tcp --dport 5672 -j ACCEPT
二、环境配置: rabbitmq_management一般情况下,RabbitMQ的默认配置就
足够了。如果希望特殊设置的话,需要手动创建,配置文件分别 为:
环境变量配置文件 rabbitmq-env.conf 配置信息配置文件 rabbitmq.config 环境变量初始值通过文件rabbitmq-env.conf来配置,rabbitmqenv.conf默认位置在/etc/rabbitmq,且位置不可更改。rabbitmqenv.conf中的每项都以 RABBITMQ_为前缀,常用参数如下:
为true则进行精细化的统计,
但会影响性能。
frame_max:包大小,若包小则低延迟,若包则高吞吐,默认
是131072=128K。
heartbeat:客户端与服务端心跳间隔,设置为0则关闭心跳,
默认是600秒。
三、安装插件并启动: 启用插件:rabbitmq-plugins enable
rabbitmq_management guest这个默认的用户只能通过 http://localhost:15672 来登录,其他的IP无法直接使用这个账号; 如果要远程通过Web控制台管理Rabbit MQ需要进行如下的配置: a) 新增用户:rabbitmqctl add_user{username}{password} b) 设置用户角色:rabbitmqctl set_user_tags {username}
(1)exchange持久化,在声明时指定durable => 1 (2)queue持久化,在声明时指定durable => 1 (3)消息持久化,在投递时指定delivery_mode => 2(1是 非持久化) 如果exchange和queue都是持久化的,那么它们之间的binding 也是持久化的。如果exchange和queue两者之间有一个持久化, 一个非持久化,就不允许建立绑定。
Rabbit MQ
高效部署分布式
消息队列
PPT模板下载:www.1ppt.com/moban/ 节日PPT模板:www.1ppt.com/jieri/ PPT背景图片:www.1ppt.com/beijing/ 优秀PPT下载:www.1ppt.com/xiazai/ Word教程: www.1ppt.com/word/ 资料下载:www.1ppt.com/ziliao/ 范文下载:www.1ppt.com/fanwen/ 教案下载:www.1ppt.com/jiaoan/
exchange接收到消息后,就根据消息的key和已经设置的 binding,进行消息路由,将消息投递到一个或多个队列里。
Rabbit MQ 结构图如下:
消息持久化:
RabbitMQ支持消息的持久化,也就是数据写在磁盘上,为了数 据安全考虑,我想大多数用户都会选择持久化。消息队列持久化 包括3个部分:
水位线,则开启流控机制,默认值是
0.4,即内存总量的
40%。
hipe_compile:将部分rabbimq代码用High Performance
Erlang compiler编译,可提升性能,该参数是实验性,若出现
erlang vm segfaults,应关掉。
force_fine_statistics:该参数属于rabbimq_management,若
添加目录
Rabbit MQ 简介 Rabbit MQ 优势
Rabbit MQ 原理分析 Rabbit MQ 部署与基础操作
Rabbit MQ 分布式与高可用
Rabbit MQ 简介
Rabbit MQ是流行的开源消息队列系统,用erlang 语言开发。RabbitMQ是AMQP(高级消息队列协议) 的标准实现。最初起源于金融系统,用于在分布式系 统中存储转发消息,在易用性、扩展性、高可用性等 方面表现不俗。
Rabbit MQ中有几个重要概念:虚拟主机(virtual host),交换机(exchange ),路由键( Routing Key ),队列(queue),绑定(binding),通道 (channel),消费者(consumer),生产者 (producer)。
1. Exchange:消息交换机,它指定消息按什么规则,路由到哪 个队列。
node2 # rabbitmqctl join_cluster --ram rabbit@node1
集群配置好后,可以在 RabbitMQ 任意节点上执行如下命令来 查看是否集群配置成功。
rabbitmqctl cluster_status
七、设置镜像队列策略: 在任意一个节点上执行:
# rabbitmqctl set_policy -p vhostpath name "^" ‘{"ha-mode":"all","hasync-mode":"automatic"}’ set_policy [-p <vhostpath>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern> <definition> 将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节 点状态保持一直。 完成这 9 个步骤后,RabbitMQ 高可用集群就已经搭建好了。
AMQP允许来自不同供应商的消息生产者和消费者实现真正的互 操作扩展,就如同SMTP、HTTP、FTP等协议采用的方式一样。 而此前对于消息中间件的标准化努力则集中在API层面上(比如 JMS),且没有提供互操作性的途径。不同于JMS的仅仅定义API, AMQP是一个线路级的协议——它描述了通过网络传输的字节流 的数据格式。因此,遵从这个协议的任何语言编写的工具均可以 操作AMQP消息。
行业PPT模板:www.1ppt.com/hangye/ PPT素材下载:www.1ppt.com/sucai/ PPT图表下载:www.1ppt.com/tubiao/ PPT教程: www.1ppt.com/powerpoint/ Excel教程:www.1ppt.com/excel/ PPT课件下载:www.1ppt.com/kejian/ 试卷下载:www.1ppt.com/shiti/
2. Queue:消息队列载体,每个消息都会被投入到一个或多个队 列。
3. Binding:绑定,它的作用就是把exchange和queue按照路由 规则绑定起来。
4. Routing Key:路由关键字,exchange根据这个关键字进行消 息投递。
5. vhost:虚拟主机,一个broker里可以开设多个vhost,用作不 同用户的权限分离。
tcp_listerners:设置rabbimq的监听端口,默认为[5672]。 disk_free_limit:磁盘低水位线,若磁盘容量低于指定值则停 止接收数据,默认值为{mem_rel ative, 1.0},即与内存相关联1: 1,也可定制为多少byte。
vm_memory_high_watermark:设置内存低水位线,若低于该
RABBITMQ_PLUGINS_DIR=
//IP地址,空串bind
//TCP端口
//节点名称。
//配置文件路径 //mnesia所在路径
//日志所在
//插件所在路径
在环境变量配置文件即rabbitmq-env.conf中通过 RABBITMQ_CONFIG_FILE指定的文件加后缀.config。一般取名 为rabbitmq.config,该文件是标准的Erlang配置文件, rabbitmq.config文件中每个参数为一个Erlang tuple,结构为 {Key,Value}, Key为atom类型, Value为一个term,其中几个 关键参数为:
Rabbit MQ 集群部署
一、为集群中所有服务器安装Erlang和RabbitMQ。 二、同步所有服务器时间。 三、修改/etc/hosts文件,加入集群所有节点描述:
192.168.1.1 node1 192.168.1.2 node2 192.168.1.3 node3 四、设置Erlang Cookie:Erlang Cookie 文件: /var/lib/rabbitmq/.erlang.cookie。将 node1 的该文件复制到 node2、node3等集群。 五、使用-detached参数启动各节点RabbitMQ。
administrato c) 编辑 /etc/rabbitmq/rabbitmq.config 添加如下配置信息:
[{rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["{username}"]} d) 启动RabbitMQ服务 rabbitmq-server -detached
Rabbit MQ 优势
谢谢!ຫໍສະໝຸດ Baidu
RABBITMQ_NODE_IP_ADDRESS= 所有地址,指定地址bind指定网络接口
RABBITMQ_NODE_PORT= 号,默认是5672
RABBITMQ_NODENAME= 默认是rabbit
RABBITMQ_CONFIG_FILE= RABBITMQ_MNESIA_BASE= RABBITMQ_LOG_BASE= 路径
六、组成集群 将 node2、node3 与 node1 组成集群:
node2 # rabbitmqctl stop_app node2 # rabbitmqctl join_cluster rabbit@node1 node2 # rabbitmqctl start_app
此时 node2 与 node3 也会自动建立连接;现在node2、node3均 为磁盘节点,如果要使用内存节点,则可以使用如下命令加入集 群: