RabbitMQ应用框架之DistributedOfRabbitMQ 介绍
项目背景:项目最早是之前就职的一家团购企业(目前已经关闭)时,编写的RabbitMQ驱动程序。之后为应用到不同数据库间的同步和逻辑处理,我做了重构和深度优化并搭建的一个基于RabbitMQ的消息总线应用架构。底层驱动使用的是rabbitmq官方提供的c#驱动。项目完成于15年初,经过了全面测试和项目实践。 年初剥离了业务代码进行了开源;需要的同学可以下载使用,如果有兴趣也可以提出意见完善项目。下面就项目做一个简要介绍,详细内容参 http://git.oschina.net/josephz/DistributedOfRabbitMQ。
基本功能介绍:
一、生产消息层面
1.实现集群多节点机制(非数据复制,而是异常时自动切换节点),目前实现的机制类似mongo的副本级集群模式。
2.节点异常切换时注意防止消息丢失,主要在管道关闭/连接关闭/推送瞬间异常时做了处理。
3.每个生产者通过一个长连接管道的方式进行通信,解决连接数超过极限导致rabbitmq异常错误,同时减少打开释放连接的资源消耗,使框架推送性能提升2-3个数量级.
4.修复实现集群时节点切换过程可能出现消息丢失的bug
5.生产者增加对象消息重载,通过二进制序列化反序列化解决类型转的问题
二、消费消息层面
1.通过订阅模式实现消费,同一节点下,消费者一个管道下进行,避免反复打开管道,大大提升消费性能。
2.框架层面实现了消费者插件化,便于部署消费者时可以基于实际情况增加或减少消费者
3.定义了两个消费者服务(影院端、总部端);消费者服务基于插件的方式实现消费者的热插拔(消费服务可以在运行状态,动态添加消费者插件,无须停止 重启服务)
4.每个消费者可以多线程订阅
5.框架层面增加性能报警,当消费者执行时间大于10秒时,增加警告日志 以上升级功能,已经全部经过测试。
补充:已经将log4net集成到框架中,实现根据业务将消费者的日志文件存储
项目详细信息参考Wiki
http://git.oschina.net/josephz/DistributedOfRabbitMQ/wikis/home