项目简介
Sia-rabbitmq-plus事情流程是客户端(生产者或消费者)通过rabbitmq接口发送或者消费,同时将客户端元信息(ip,行列步队名称,项目名称,预警值等)发送给心跳监测行列步队。 定时任务定时网络rabbitmq干系的行列步队数据,同时监测预警值发送预警信息。紧张包含以下几个模块
客户端(sia-rabitmq-plus-client)紧张供应了消费和发送的api接口MQ信息网络模块(sia-rabbitmq-plus-gather)http办法调用rabbitmq的接口采集rabbitmq干系信息心跳监测模块 (sia-rabbitmq-plus-heartbeat)网络客户端生产者和消费者的心跳数据监控前端展示模块(sia-rabbitmq-plus-display)将网络到的mq信息和心跳数据展示在前台页面RabbitMQ的特性行列步队中间件(Message Queue Middleware ,简称为MQ) 是指利用高效可靠的通报,机制进行与平台无关的数据互换,并基于数据通信来进行分布式系统的集成。通过供应传,递和排队模型,它可以在分布式环境下扩展进程间的通信。作为浩瀚中间件之一的。RabbitMQ发展到本日被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不开的。
RabbitMQ 的详细特点可以概括为以下几点。
可靠性: RabbitMQ 利用一些机制来担保可靠性,如持久化、传输确认及发布确认等。 令灵巧的路由: 在进入行列步队之前,通过交流器来路由。对付范例的路由功能, RabbitMQ己经供应了一些内置的交流器来实现。针对更繁芜的路由功能,可以将多个 交流器绑定在一起,也可以通过插件机制来实现自己的交流器。扩展性: 多个RabbitMQ节点可以组成一个集群,也可以根据实际业务情形动态地扩展 集群中节点。高可用性: 行列步队可以在集群中的机器上设置镜像,使得在部分节点涌现问题的情形下队 列仍旧可用。多种协议: RabbitMQ除了原生支持AMQP 协议,还支持STOMP,MQTT 等多种 中间件协议。多措辞客户端:RabbitMQ险些支持所有常用措辞,比如Java、Python、Ruby、PHP、 C#、JavaScript 等。管理界面: RabbitMQ供应了一个易用的用户界面,使得用户可以监控和管理、集 群中的节点等。插件机制: RabbitMQ供应了许多插件,以实现从多方面进行扩展,当然也可以编写自 己的插件。Sia-rabbitmq-plus特性高可用性:
RabbitMQ行列步队做事集群化,支持动态增删集群节点。 增加镜像行列步队,预防单点故障。
可紧缩性:
支持动态增删消费线程以适应的处理。每个监听行列步队都有一个线程池供应做事,用户可自定义消费处理线程池。
易用性:
去中央化管理,干系配置信息本地化,大略方便。
追踪所有收发的在本地用单独的日志文件存储,方便数据规复与排错。
邮件预警增加对线上行列步队的实时监控,触发预警时及时关照到个人。
支持三种发送办法1 . 点对点模式:Provider生产发送到行列步队中,Consumer绑定行列步队获取消息。
2 . 发布订阅模式: Provider将发送给Exchange,然后Consumer创建Queue绑定到Exchange吸收。
3 . 同步链条模式:仿照系统间同步要求调用,实现机制与之前版本完备保持同等,但不作推举利用。
监控页面预览
监控页面可以直不雅观的看到每个行列步队的消费情形、预警邮箱、吸收的ip、发送的ip通过颜色区分行列步队的康健情形,以及最多7天的历史信息。详细查看利用指南
Sia-rabbitmq-plus主要指标吞吐量(每秒最大要求量)大概每秒20MB的数据(并发要求也是依次进入行列步队做事器)一天的最大吞吐量为1728GB。每秒最大的并发量假设每条均匀10KB,则每秒可以流利的数为2000条,一天可以流利的为172,800,000 (1亿7千2百8十万)条的最大堆积sia-rabbitMQ-plus的堆积量跟硬盘空间有关,目前SIA搭建的RabbitMQ集群所在的宿主机为8核16G内存256G磁盘。 据最新的统计,目前单行列步队最高一天流利1百万条关键术语exchange:吸收发布运用程序发送的,并根据一定的规则将这些路由到“行列步队”。queue:存储,直到这些被消费者安全处理完为止。businessCode: businessCode是两个别系间通讯的的唯一的标示符,对应MQ做事器的queuegroupCode:发布订阅模式下的交流机,对应MQ做事器的exchange利用指南:
rabbitmqPlus监控后台利用解释1.1 监控后台页面预览
启动sia-rabbitmq-plus-display项目后打开本地地址:http://127.0.0.1:17003
即可看到监控页面,监控页面未做权限掌握可看到所有行列步队的信息。点击详细的行列步队名称可以进入查看行列步队详情。
2.1 术语阐明
行列步队名称:RabbitMQ做事器上的行列步队名项目名称:用户配置的PROJECT_NAME累积条数:当前行列步队未消费的条数增长次数:累积条数持续增长的次数发送条数:之前一分钟内发往行列步队的条数吸收据数:之前一分钟内从行列步队消费的条数消费者数:从行列步队吸收的消费者个数报警Email:吸收预警邮件的邮箱名,SIA5.0系列版本中,用户配置的EMAIL_RECEVIERS吸收IP及时间:从行列步队消费的机器IP及其最近的消费韶光发送IP及时间:向行列步队发送的机器IP及其最近的发送韶光行列步队总数:RabbitMQ做事器上的行列步队名总数发送总数:之前一分钟发往各行列步队的条数总和吸收总数:之前一分钟从各行列步队消费的条数总和2.2 行列步队状态阐明
行列步队康健状态按颜色分为五类:
赤色:预警状态,累积条数或增长次数超过用户设定的阈值(累积条数默认阈值为100条,增长次数默认阈值为5次)。此时已发送预警邮件。黄色:警告状态,消费者数为零,累积条数大于零。解释有未消费的。灰色:弃用状态,消费者数为零,累积条数也为零。解释行列步队没有流利,可能已废弃。白色:空闲状态,消费者数大于零,发送条数与吸收据数都为零。解释行列步队暂无流利。绿色:运行状态,消费者数大于零,发送条数与吸收据数也都大于零。解释行列步队有流利,收发两端正常通信。2.3 实时数据查看
(1)检索功能
在运用的最上方,有一个检索框:
以行列步队名称做模糊检索,就能查看相应的行列步队:
(2)排序功能
对行列步队名称、累积条数、增长次数、发送条数、吸收据数、消费者数等列供应排序功能。
以发送条数为例,点击发送条数,涌现发送条数▲,表示按照升序排序:再次点击发送条数,涌现发送条数,表示按照降序排序:(3)检索功能与排序功能可以搭配利用
(4)点击行列步队名称这一列下的任意行列步队,即进入相应行列步队的历史数据查询界面
2.4 历史数据查询
(1)发送条数与吸收据数展示图
按照韶光单位,可以展示最近7天的历史数据。选择韶光单位,设置起始韶光与结束韶光,点击查看:
分,查看区间为30分钟
时,查看区间为30小时(发送条数与吸收据数重合了)
日,查看区间为7天(发送条数与吸收据数重合了)
如果只想看发送条数(或吸收据数),则点击发送条数(或吸收据数)进行开启或关闭。
(2)累积条数展示图
按照韶光单位,可以展示最近7天的历史数据。查看区间为30分钟。
累积条数不为零解释当时发送条数总数大于吸收据数总数。
点击返回图标,即可回到上一层实时数据查看界面
3. 行列步队预警的阐明
行列步队预警邮件示例:
剩余数:188 报警阈值:1000 增长次数:12 报警增长次数阈值:11
阐明如下:
if(剩余数>报警阈值){ 发送预警邮件,解释消费者吸收速率慢,须要关注!
}if(增长次数>报警增长次数阈值){ 发送预警邮件,大概率消费者已经停机,须要立即处理!
}开拓指南
skytrain-client发送配置
1、准备事情
发送端须要配置siaparameters.properties文件(文件名不可变动)RABBITMQ_HOST=10.100.66.81RABBITMQ_PORT=5672SKYTRAIN_LOG_ROOT=D:/logs/sendSKYTRAIN_LOG_FILESIZE=10MBSKYTRAIN_LOG_FILENUMS=5PROJECT_NAME=skytrain_client_testPROJECT_DESCRIPTION=skytrain_project_teamEMAIL_RECEVIERS=xinliang@creditease.cn,pengfeili23@creditease.cnRABBITMQ_HOST,MQ做事器的IP地址(必须)RABBITMQ_PORT,MQ做事器对外暴露的做事端口(必须)SKYTRAIN_LOG_ROOT,自定义日志输出路径(可选,默认系统当前路径)。发送吸收产生的日志按照行列步队名在指定路径天生SKYTRAIN_LOG_FILESIZE,自定义日志大小(可选,默认20MB,单位:【KB、MB、GB】)SKYTRAIN_LOG_FILENUMS,自定义日志个数(可选,默认10个)
把稳:默认日志大小为:20MB10,循环日志,项目组可根据实际需求设置大小及个数
PROJECT_NAME,项目组名称(必须),把稳吸收的行列步队名必须以此开头。如果是发送者,请让吸收者先启动(由于发送者不建立行列步队)PROJECT_DESCRIPTION,项目组描述,对项目组的(中文)描述(可选)EMAIL_RECEVIERS,预警邮件吸收者,邮箱为公司邮箱,多个按逗号隔开(必须)2、siaparameters.properties 配置文件的读取
从class文件所在的路径查找若上一步没有找到,则从项目lib包所在的路径查找自定义目录下,通过代码 PropertyHelper.setProfilePath(\"大众文件所在目录\"大众); 设置,就能精确加载。配置文件的读取优先级从1.->2.->3.,如果终极没有找到,会有出错信息,按照提示办理即可。一样平常把该文件与其他配置文件放在一起即可。启动参数添加 在启动时,添加JVM参数 -DSKYTRAIN_FILE_PATH=文件所在目录这种办法与3.二选一即可skytrain-client吸收配置
1、吸收端须要配置 siaparameters.properties 文件
拜会siaparameters.properties 文件的配置
2、吸收端须要配置 receivequeue.properties 文件
把稳:文件名不可变动!
点对点模式吸收配置:
skytrain_client_test_send_p2p={\"大众unConsumeMessageAlarmNum\"大众:200,\公众unConsumeMessageAlarmGrowthTimes\"大众:10,\公众className\"大众:\"大众skytrainDemo.RecevieP2P\公众,\"大众methodName\"大众:\"大众execRun\"大众,\"大众autoAck\"大众:\公众false\公众,\"大众threadPoolSize\"大众:\公众4\公众}
发布订阅模式吸收配置:
skytrain_client_test_send_pubsub@skytrain_client_test_receive_message={\公众unConsumeMessageAlarmNum\"大众:200,\"大众unConsumeMessageAlarmGrowthTimes\公众:10,\"大众className\公众:\公众skytrainDemo.ReceviePubSub\"大众,\"大众methodName\"大众:\"大众execRun\公众,\"大众autoAck\公众:\公众true\"大众,\公众threadPoolSize\"大众:\"大众4\"大众}skytrain_client_test_send_p2p,MQ做事器的吸收行列步队名,对应发送真个businessCode(点对点模式,必须),项目组自行设置,须要以PROJECT_NAME 开头skytrain_client_test_send_pubsub,MQ做事器吸收交流机名,对应发送真个groupCode(发布订阅模式,必须),项目组自行设置。skytrain_client_test_receive_message,MQ做事器的与交流机绑定的行列步队名(发布订阅模式,必须),项目组自行设置。unConsumeMessageAlarmNum,自定义行列步队累积条数预警阈值,超过则发预警邮件(可选,默认为100条)unConsumeMessageAlarmGrowthTimes,自定义累积持续递增的次数阈值,超过则发预警邮件(可选,默认为5次)className,吸收端进行处理的(包名+)类名(必须)methodName,吸收端进行处理的方法名(必须),吸收参数只有一个,要么是SIAMessage要么是String,例如:
public void execRun(SIAMessage message) {}public void execRun(String message) {}autoAck,是否开启自动ACK机制(可选),默认手动确认(true,吸收方吸收到后,自动向做事器发回确认,false,吸收方处理完后,再向做事器发送确认,做事器再删除该的副本)。建议设为false(手动确认),这样能担保未消费的不丢失,但线上可能累积。若设为true,则将全部拉回本地内存(如果宕机,则丢失)。实质上的消费速率与该设置无关,与的处理线程池大小有关。这个设置的意义是选择将缓存在本地内存还是做事器。请项目组自己考量。threadPoolSize,吸收端进行处理利用线程池的大小(可选),默认为1,这个值与并行处理数干系,建议设置为处理器的核数X2。
3、receivequeue.properties配置文件的读取
略,拜会 siaparameters.properties 配置文件的读取
4、消费者的启动
文件 receivequeue.properties 精确配置后,只需在程序的启动(初始化)块中加入代码:
Consumer.start();
就能按照配置文件的设置启动所有的消费者(receivequeue.properties 里可以配置多个行列步队消费者)
如果利用Spring的bean干系配置:
例:
<bean id=\"大众helloWorld\公众 class=\"大众skytrainDemo.testBean\公众 />
上面的对应设置为:
点对点吸收配置:
skytrain_client_test_send_p2p={\"大众unConsumeMessageAlarmNum\"大众:200,\"大众unConsumeMessageAlarmGrowthTimes\公众:10,\"大众beanName\公众:\"大众helloWorld\"大众,\"大众beanMethodName\公众:\"大众getMessage\"大众,\"大众autoAck\"大众:\"大众false\"大众,\"大众threadPoolSize\"大众:\公众4\"大众}
发布订阅吸收配置:
skytrain_client_test_send_pubsub@skytrain_client_test_receive_message={\"大众unConsumeMessageAlarmNum\"大众:200,\公众unConsumeMessageAlarmGrowthTimes\"大众:10,\"大众beanName\"大众:\公众helloWorld\"大众,\"大众beanMethodName\"大众:\"大众getMessage\公众,\"大众autoAck\公众:\"大众false\公众,\公众threadPoolSize\公众:\"大众4\"大众}beanName,bean的名字,须要在 Spring 的 applicationContext.xml 中配置,如下所示
<bean id=\"大众helloWorld\公众 class=\"大众com.sia.testBean\"大众 />beanMethodName,吸收的方法名,bean所在的类中对应的吸收方法,与methodName一样,只能包含一个(String或SIAMessage)参数
把稳:
如果利用 Spring 而不是 Web 项目,只需在程序的启动(初始化)块中加入代码:
Consumer.start(ApplicationContext applicationContext)
通报一个运用的高下文,就能按照配置文件的设置启动所有的消费者(receivequeue.properties 里可以配置多个行列步队消费者)
如果是 Web 项目,通过 listener 启动就可以了
吸收端web.xml配置
利用如下配置:
<listener> <listener-class>com.sia.rabbitmqplus.start.SIAInitialListener</listener-class></listener>
把稳:
配置过程中,最好将 sia 的 SIAInitialListener 配置在 web.xml 的末了,便于sia的正常加载。
SIA工具解释
类名: SIAMessage
所在包:com.creditease.sia.pojo
sia-rabbitmq-plus支配指南一. mysql初始化
DROP TABLE IF EXISTS `skytrain_queue_message_info_history`;CREATE TABLE `skytrain_queue_message_info_history` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `queue_name` varchar(100) NOT NULL, #行列步队名称 `un_consume_message_num` int(11) DEFAULT NULL,#残留数量 `publish_message_num` int(11) DEFAULT NULL,#发送数量 `deliver_message_num` int(11) DEFAULT NULL,# 消费数量 `worktime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `id_UNIQUE` (`id`), KEY `index3` (`queue_name`), KEY `index4` (`worktime`)) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
二. redis安装
reids的安装和配置详见官方文档,单机或集群模式都行
三. rabbitMQ 安装
rabbitMQ的安装和配置详见官方文档,单机或集群都行
##项目支配
1.环境哀求 系统:64bit OS,Linux/Mac/Windows IDE:推举利用IntelliJ IDEA 或 Eclipse JDK:JDK1.6+
2.从SIA-RABBITMQ-PLUS工程下获取源代码打包,实行rabbitmq-plus-build-component目录的mvn命令即可。
在~/sia-task/sia-task-build-component目录下,实行如下命令打包:mvn clean install 。打包成功后,会在~/sia-rabbitmq-plus/rabbitmq-plus-build-component 目录下涌现target文件,target文件中的.zip文件即为项目安装包。打开安装包所在文件夹,将安装包解压,得到task目录,个中包括四个子目录:3.配置文件修正
将config文件夹下的sia-task-config工程的配置文件task_config_open.yml,以及sia-task-scheduler工程下的配置文件task_scheduler_open.yml中的zookeeper和Mysql的链接修正为自己的地址。
4.启动sia-rabbitmq-plus-heartbeat工程
sh sia-rabbitmq-plus-heartbeat.sh
5.启动sia-rabbitmq-plus-gather工程 sh sia-rabbitmq-plus-gather.sh
6.启动sia-rabbitmq-plus-display工程 sh sia-rabbitmq-plus-display.sh
7.启动sia-rabbitmq-plus-dome工程 sh sia-rabbitmq-plus-dome.sh
私信回答\"大众sia-rabbitmq-plus\"大众获取链接地址,喜好的点个关注,一起学习磋商新技能。