RabbitMQ简要整理

1 引言 1.1 编写目的

文档编写的目的是提供关于如何使用消息平台,具有可操作性和易于理解的使用说明书。指导消息平台运维团队和项目开发团队在项目开发、测试以及运维阶段各角色的开发职责。

叙永网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
1.2 术语定义

2 消息平台概述

随着泰康人寿各系统之间的数据交互越来越频繁,如何降低各系统之间耦合度,实现各系统之间的异步消息通讯成为越来越迫切的需求,为此建立了泰康消息平台。

2.1 基本概念

泰康消息平台主要基于RabbitMQ中间件搭建的,RabbitMQ是目前开源消息中间件里非常成熟和优秀的产品,具有高性能、高可用、高扩展和高安全等特性,在互联网行业公司有着非常广泛的应用并经过了大量的项目实践检验。

RabbitMQ中间件是基于AMQP协议模型开发的,在使用消息平台进行异步通讯开发时,需要很好理解以下基本概念。

Exchange

接收发布应用程序发送的消息,并根据一定的规则将这些消息路由到“消息队列”。

Message Queue

存储消息,直到这些消息被消费者安全处理完为止。

Binding

定义了exchange和message queue之间的关联,提供路由规则。

Channel

进行相关定义,发送消息,获取消息,事务处理等,是读写消息的通道,客户端可建立多个channel来进行会话任务。

Connection

消费者与Broker的TCP连接。建议消费者线程之间不要共用Channel,但是建议尽量共用Connection。

Broker

接受客户端连接,实现AMQP消息队列和路由功能的进程。

消息通讯示意图如下:

3 日常操作说明 3.1 用户管理

3.1.1 新用户信息

3.1.1.1 添加用户

用admin角色的账号登录控制台,找到admin下的users选项,点进去,找到add a user模块,如下图

输入相应信息,然后点击add user,用户rabbit创建完成。在上面的all users模块里即可看到rabbit的用户信息。

Tags 代表所选角色,角色类型请参考3.1.2.1

3.1.1.2 修改用户

找到all users模块,找到刚才新建的rabbit用户,点击用户名进入用户详情页。

在详情页找到update this user模块,然后输入密码,即可修改此用户的角色,如下图。

Tags 代表所选角色,角色类型请参考3.1.2.1

3.1.1.3 删除用户

在用户详情页,找到delete this user模块,然后点击delete按钮,即可删除此用户,如下图。

3.1.2 角色信息

3.1.2.1 角色类型

(1)none
不能访问控制台

(2)management
用户可以通过AMQP做的任何事外加:
列出自己可以通过AMQP登入的virtual hosts
查看自己的virtual hosts中的queues, exchanges 和 bindings
查看和关闭自己的channels 和 connections
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。

(3)policymaker
management可以做的任何事外加:
查看、创建和删除自己的virtual hosts所属的policies和parameters

(4)monitoring
management可以做的任何事外加:
列出所有virtual hosts,包括他们不能登录的virtual hosts
查看其他用户的connections和channels
查看节点级别的数据如clustering和memory使用情况
查看真正的关于所有virtual hosts的全局的统计信息

(5)administrator
policymaker和monitoring可以做的任何事外加:
创建和删除virtual hosts
查看、创建和删除users
查看创建和删除permissions
关闭其他用户的connections

3.1.2.2 添加角色

参考3.1.1.2修改用户,详细写了如何修改用户的角色

3.1.3 权限信息

3.1.3.1 权限参数说明

Vhost:虚拟主机对用户的权限进行分离。

Configure regexp:对queue或exchange新建和配置的权限。

Write regexp:对一个queue或exchange写消息的权限。

Read regexp:对一个queue或exchange读消息的权限。

3.1.3.2 添加权限

在用户的详情页,找到Permissions模块,下图可看出新建的用户rabbit还没有分配权限。填写上对应的权限信息,然后点击Set permission 保存设置。Configure、Write、Read这三个是用正则表达式来匹配是否有某个queue或exchange的权限。

.* 表示对所有queue和exchange有此权限。

^$ 表示对所有的queue和exchage没有此权限。

^(hello.*)$ 表示只有以hello开头的queue或exchage的权限

^(hello.*|team.*)$ 表示有以hello和team开头的queue或exchange的权限。

3.2 队列管理

3.2.1 添加队列(queue)

找到queue选项,找到add a new queue模块,填写上对于的参数,点击Add queue即可添加一个queue在指定的vhost里。

Durability:是否持久化此队列(durable表示持久化,transient表示非持久化)。

Auto delete :是否自动删除此队列(一次性队列,即:当队列中的消息被消费者接收,不管消费者有没有返回确认状态,只要消费者与平台断开连接,则队列会自动删除),下面的参数可以配置自动删除的规则。

Arguments里的参数:

x-message-ttl 队列被销毁前存放多久,单位毫秒

x-expires 队列自动删除前使用多久,单位毫秒

x-max-length 一个队列的长度,超过这个长度则从头开始销毁消息

x-max-length-bytes 一个队列所有的body的size,超过则从头开始销毁消息

x-dead-letter-exchange 如果一个消息拒收或者过期,则会发布到指定名称的exchange里。

x-dead-letter-routing-key 消息过期或者拒收后的routekey值,如果没有设置则用之前的。

添加完队列后,上面的All queues里会显示该队列,点击该队列名称进入详情页。

Bindings模块:

在这里可以增加和删除此queue和exchange的绑定关系,以及route key的设置。

delete模块:

在最下面的delete模块,点击delete可以删除此queue。

3.2.2 添加交换机(exchange)

找到exchange选项里的add a new exchange模块,填写相应的信息,然后点击add exchange,即可添加此exchange。

信息含义:

Internal:该exchange是否只对内部使用。

Arguments里的参数

alternate-exchange :如果发到这个exchange的消息没有指定queue接收,则把这条消息发送到指定的exchange里。

在all exchanges模块里,找到该exchange,然后点击名称进入该exchange的详情界面,找到bindings模块,这里可以建立和queue或其他exchange的绑定关系,以及route key的配置。

最下面的delete模块,点击delete即可删除此exchange。

3.3 跟踪日志

3.3.1 参数说明

Format:日志的格式,text方便人查看,json方便机器识别。

Max payload bytes:每条日志记录的payload(消息体)的字节,超出则截断消息。

Pattern:日志的模式,即记录日志的条件。

# 匹配所有的消息,无论是发布还是消费的信息。

publish.# 匹配所有发布的消息。

deliver.# 匹配所有被消费的消息。

#.test 如果test是队列,则匹配已经被消费了的test队列的消息。如果test是exchange,则匹配所有经过该exchange的消息。

监控的日志默认存放位置为:/var/tmp/rabbitmq-tracing;用户名默认是谁创建的消息就记录谁的名字。

在rabbitmq.config 配置文件配置路径格式:

[{rabbitmq_tracing, [{directory, "/my/log/file/location"},{username, "guest"}]}].

3.3.2 添加跟踪日志

找到tracing选项,add a new trace模块,填写相应的信息,即可创建一个跟踪日志。

在all traces模块里,点击右边的log file名称即可查看该日志,也可以找到该文件的所在目录查看。

3.3.3 删除跟踪日志

如上图,点击stop即可停止此跟踪日志。点击delete即可删除此日志文件。

3.4 系统信息

3.4.1 查看内存磁盘信息

在overview选项下的nodes模块,可以整体的看到各个节点的内存、磁盘、连接等情况,内存默认为使用超过节点机器40%时阻塞线程,可以在配置文件里调整具体的阈值。

如果吞吐量占用内存超过机器内存的40%,则可适当调高此值,最坏的情况是80%,在40%~80%之间此值越少越好,如果超过80%就给机器加内存。

在queue选项下,all queues模块里能看到所有队列的具体占用内存磁盘情况。

3.5 添加vhost

3.5.1 添加vhost

找到admin下的Virtual Hosts选项,这里是对Vhost的管理,add a new virtual host模块填写名称即可增加一个vhost。

3.5.2 删除vhost

在vhost界面的all virtual hosts模块,点击vhost的名称进入详情界面,permissions模块是对该vhost下用户的权限的管理。Delete this vhost模块下点击delete this virtual host 按钮删除此vhost。

3.6 节点管理

3.6.1 添加节点

./rabbitmqctl -n test2 join_cluster test1@hostname

具体的使用方法可参考集群搭建文档。

3.6.2 停止节点

使用命令 ./rabbitmqctl stop 来停止此节点。

3.6.3 开启节点

./rabbitmq-server -detached 后台启动

nohup ./rabbitmq-server start & 后台启动

4 流程开通 4.1 平台管控开通

1、 新建vhost (如果此项目的消息平台vhost已经存在,则跳过此步骤。)参考3.5.1

2、 根据申请单给该系统创建queue或exchange,并且建立和其他queue或exchange的绑定关系。

(以上步骤请参考3.2队列管理操作)

3、 在该vhost里新建一个用户,角色设置为none。

(1) 如果该系统只接收消息,则给该用户设置配置权限^$,读权限^(queue)$,写权限^$。

(2) 如果该系统只发送消息,则给该用户设置配置权限^$,读权限^$,写权限^(exchange)$。

(3) 如果该系统即接收消息也发送消息,则给该用户设置配置权限^$,读权限^(queue)$,写权限^(exchange)$。

添加用户请参考3.1用户管理

4.2 项目管控开通

5 检查清单

1、 查看集群里的各个节点运行状况。

2、 内存使用大小,以及剩余大小。

3、 磁盘使用大小,以及剩余大小。

4、 查看队列是否有大量消息堆积,

5、 队列的占用内存和磁盘大小。

以上查看信息请参考 3.4.1

6 linux常用命令

查看控制台日志,进入overview选项,nodes模块,点击主机名查看详情,如下图:

在这里找到日志文件的路径。

tail –f /home/tomcat/rabbitMQ/rabbit-1/var/log/rabbitmq/test1.log 动态的查看日志。

tail /home/tomcat/rabbitMQ/rabbit-1/var/log/rabbitmq/test1.log -n 200 查看最近200行的日志。

启动关闭节点,进入安装路径的sbin目录

./rabbitmqctl stop 关闭当前节点

./rabbitmq-server -detached 后台启动

nohup ./rabbitmq-server start & 后台启动


本文标题:RabbitMQ简要整理
网页链接:http://myzitong.com/article/chdopg.html