1. 面向EDA(事件驱动架构)的方式来设计你的消息

  2. AMQP routing key的设计

  3. RabbitMQ cluster搭建

  4. Mirror queue policy设置

  5. 两个不错的RabbitMQ plugin 大型应用插件(Sharding、Rederation)

  6. Queue镜像失败手动同步

  7. 各集群配置同步方式(RabbitMQ export\import)

  8. 客户端连接方式(尽量采用AMQP组来动态链接)

  9. RabbitMQ 产线二次产品化封装(消息补偿、发送消息持久化、异常处理、监控页面、重复消息剔除)

1.面向EDA(事件驱动架构)的方式来设计你的消息

在通常情况下你在使用消息中间件的时候,都是未经设计的使用,你没有把应用架构和系统架构边界搞清楚。消息中间件只是一个纯粹的技术工具,当你引入的时候是站在应用架构的角度引入的。这是架构的角度,也是架构的上帝视角,这样你就不会用到最后发现越来越混乱,而且也无法结合软件模式、方法论、最佳实践来综合提升系统的架构能力。

EDA(Event Driven Architecture,EDA) 事件驱动架构,它是一种用来在SOA或者Micro service中进行的架构模式。它的好处有几个,柔性具有很高的伸缩性。

(具体参考本人的SOA架构文章:SOA架构设计经验分享—架构、职责、数据一致性

既然要EDA就要规划好你当前的系统边界之内有多少业务实体,这些实体是围绕着领域模型而得来。所以这里不要很主观的就定义一些你认为的事件,这些事件要根据业务实体中的对象来设计。业务实体起码是有唯一Identity的。比如,订单、商品,围绕着这些实体展开,订单可能有几个状态是比较常用的,创建、支付