面向EDA(事件驱动架构)的方式来设计你的消息
AMQP routing key的设计
RabbitMQ cluster搭建
Mirror queue policy设置
两个不错的RabbitMQ plugin 大型应用插件(Sharding、Rederation)
Queue镜像失败手动同步
各集群配置同步方式(RabbitMQ export\import)
客户端连接方式(尽量采用AMQP组来动态链接)
RabbitMQ 产线二次产品化封装(消息补偿、发送消息持久化、异常处理、监控页面、重复消息剔除)
1.面向EDA(事件驱动架构)的方式来设计你的消息
在通常情况下你在使用消息中间件的时候,都是未经设计的使用,你没有把应用架构和系统架构边界搞清楚。消息中间件只是一个纯粹的技术工具,当你引入的时候是站在应用架构的角度引入的。这是架构的角度,也是架构的上帝视角,这样你就不会用到最后发现越来越混乱,而且也无法结合软件模式、方法论、最佳实践来综合提升系统的架构能力。
EDA(Event Driven Architecture,EDA) 事件驱动架构,它是一种用来在SOA或者Micro service中进行的架构模式。它的好处有几个,柔性具有很高的伸缩性。
(具体参考本人的SOA架构文章:SOA架构设计经验分享—架构、职责、数据一致性)
既然要EDA就要规划好你当前的系统边界之内有多少业务实体,这些实体是围绕着领域模型而得来。所以这里不要很主观的就定义一些你认为的事件,这些事件要根据业务实体中的对象来设计。业务实体起码是有唯一Identity的。比如,订单、商品,围绕着这些实体展开,订单可能有几个状态是比较常用的,创建、支付