RabbitMQ实战指南-朱忠华-电子工业出版社

2020-04-06  本文已影响0人  快给我饭吃

RabbitMQ简介

消息中间件的作用:

RabbitMQ具体特点:

RabbitMQ入门

GurFP0.png

RabbitMQ的模型架构如图,生产者Publisher通过TCP连接Connnection与RabbitMQ服务器Broker连接,每个Connection中有多个ChannelBroker服务器中有多个Virtual Host,每个Virtual Host各自独立。Publisher发布消息Message到Exchange交换器,Message包含label(路由键)+payload(消息体),Binding上带有绑定键,交换器根据自身性质和路由键和绑定键决定将消息投递到哪里。最终消息被保存在Queue队列中,Consumer监听队列获得消息。

注意:

AMQP协议

Gu27y6.png

如上图,AMQP协议每次发送数据时的指令。

客户端开发向导

本章讲了RabbitMQ Java客户端的开发,只摘录我的部分理解在此。

创建RabbitMQ各个组件时可以有不同的参数。

RabbitMQ的消息存储在队列中,交换器的使用并不真正耗费服务器的性能,而队列会。衡量RabbitMQ的QPS只需看队列即可。

消费端的确认和拒绝:消息订阅有推和拉两种模式,订阅时可以设置是否自动确认,自动确认的消息在RabbitMQ将消息发出时移除,非自动确认的消息需要客户端手动确认。也可以拒绝该消息,拒绝时传递一个requeue参数,可以设置是否将该消息重洗入队等待发送,或者将其移除。

RabbitMQ进阶

本章讲的是RabbitMQ的高级功能。

备份交换器AE:

过期时间TTL

死信交互器DLX(也称死信队列):

GtcFsg.png

持久化,RabbitMQ分为三部分:

消息的可靠性:

RabbitMQ管理

RabbitMQ的应用工具:

多租户与权限

用户管理

用户分为五种角色:

web端管理

应用与集群管理

vhost、权限等都可以使用rabbitmqctl来创建,但交换器、队列和绑定关系却无法用rabbitmqctl来创建,只能通过web管理界面创建。然而,rabbitmq management还提供了命令行rabbitmqadmin来解决这个问题。如查看队列中的消息

rabbitmqadmin get queue=myqueue

rabbitmq management还提供了http api接口来方便调用。如创建一个队列,可以使用PUT方法调用/api/queues/vhost/name接口来实现。

RabbitMQ配置

三种方式配置:

RabbitMQ运维

本章主要将集群的搭建和运维

跨越集群的界限

RabbitMQ可以通过3种方式实现分布式部署:

RabbitMQ高阶

本章是将RabbitMQ的内部原理的,需要熟悉

流控

RabbitMQ可以对内存和磁盘使用量设置阈值,达到阈值后,生产者将阻塞。这是全局流控,面向所有连接的。当然RabbitMQ也可以面向单个Connection进行流控。

RabbitMQ使用一种基于信用证算法的流控机制来限制发送消息的速率。

镜像队列

生产者发送消息时,会将消息都发送到各个slave,除发送消息外的所有动作都只会向master发送,然后再由master将命令执行的结果广播给各个slave。

网络分区

在局域网环境下,网络设备出现故障时也会导致网络分区。当出现网络分区时,不同分区里的结点会认为不属于自身所在分区的结点都已经挂了。如果原集群中配置了镜像队列,每个网络分区中都会出现一个master结点。

RabbitMQ拓展

消息追踪:Firehose

负载均衡:轮询、加权轮询、随机、加权随机、源地址哈希、最小连接数

使用HAProxy实现负载均衡

使用Keepalived实现高考可靠负载均衡

使用keepalived+LVS实现负载均衡

上一篇下一篇

猜你喜欢

热点阅读