zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    BZOJ 4726: [POI2017]Sabota? 树形dp
    Codeforces Round #381 (Div. 1) B. Alyona and a tree dfs序 二分 前缀和
    uestc_retarded 模板
    CROC 2016
    Codeforces Round #381 (Div. 1) A. Alyona and mex 构造
    BZOJ 2648: SJY摆棋子 kdtree
    BZOJ 3732: Network 最小生成树 倍增
    HDU 5914 Triangle 数学找规律
    HDU 5902 GCD is Funny 数学
    Codeforces Round #379 (Div. 2) E. Anton and Tree 缩点 直径
  • 原文地址:https://www.cnblogs.com/joseph_zheng/p/7112352.html
Copyright © 2011-2022 走看看