一、使用场景
入库单入库完成后,需要生成财务流水和推送财务凭证等操作
传统的做法:将入库数据写入数据库后,直接生成财务流水和财务凭证
这里的问题是,财务凭证可能需要推送到第三方系统,可能会出现失败的情况,而且和入库单业务产生了耦合
使用消息中间件:入库单写入数据库后,发送[入库完成]的mq消息,消费者监听该消息。这样有两个好处,1.入库单业务层不再耦合财务流水和凭证了 2.财务流水和凭证可实现异步入库和推送,提升了系统响应速度
二、消息中间件的选择
持久化消息比较:zeroMq不支持,activeMq和rabbitMq都支持。持久化消息主要是指:MQ down或者MQ所在的服务器down了,消息不会丢失的机制。
可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统、社区—RabbitMq最好,ActiveMq次之,ZeroMq最差。
高并发:从实现语言来看,RabbitMQ最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。
综上所述:RabbitMQ的性能相对来说更好更全面,是消息中间件的首选。
三、RabbitMq简介
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向