spring boot集成rabbitMQ:系列一

目录

一、比较各大mq框架的特点

二、mq的应用场景

1、异步处理

2、应用解耦

3、流量削峰

三、mq框架的性能指标

四、相关概念:

 


一、比较各大mq框架的特点

ActiveMQRabbitMQRocketMqZeroMQ
关注度  
成熟度  成熟成熟比较成熟不成熟
所属社区/公司Apache Mozilla
Public
License
Alibaba   
社区活跃度  
文档  
特点  功能齐全,被大量开源项目使用由于Erlang 语言的并发能力,性能很好   各个环节分布式扩展设计,主从 HA;支持上万个队列;多种消费模式;性能很好低延时,高性能,最高 43万条消息每秒  
授权方式  开源开源开源开源
开发语言  JavaErlang  Java  C
支持的协议  OpenWire、
STOMP、
REST、XMPP、
AMQP
AMQP  自己定义的一
套(社区提供
JMS--不成熟)
TCP、UDP
客户端支持语言  Java、C、
C++、
Python、
PHP、
Perl、.net 等  
Java、C、
C++、
Python、 PHP、Perl 等
Java  
C++(不成熟)  
 
python、 java、 php、.net 等
持久化  内存、文件、数据库内存、文件磁盘文件在消息发送端保存
事务  支持不支持支持不支持
集群  支持支持支持不支持
负载均衡支持支持支持不支持
管理界面  一般无社区有 web
console   实现
部署方式  独立、嵌入独立独立独立
评价  优点:
   成熟的产品,已经在很多公司得到应用(非大规模场景)。有较多的文档。各种协议支持较好,有多重语言的成熟的客户端;
缺点:
根据其他用户反馈,会出莫名其妙的问题,切会丢失消息。 其重心放到activemq6.0 产品—apollo 上去了,目前社区不活跃,且对 5.x 维护较少;
Activemq 不适合用于上千个队列的应用场景
优点:   由于erlang语言的特性,mq 性能较好;管理界面较丰富,在互联网公司也有较大规模的应用;支持amqp系诶,有多中语言且支持 amqp 的客户端可用
 
缺点:
  erlang语言难度较
大。集群不支持动态扩展。
优点:
   模型简单,接口易用(JMS   的接口很多场合并不太实用)。在阿里大规模应用。目前支付宝中的余额宝等新兴产
品均使用rocketmq。集群规模大概在50 台左右,单日处理消息上百亿;性能非常好,可以大量堆
积消息在broker   中;支持多种消费,包括集群消费、广播消费等。开发度较活跃,版本更新很快。
 缺点:
  没有在 mq 核心中去实现JMS 等接口,
 

二、mq的应用场景

1、异步处理

在业务流程中,对于那些非必须的业务节点,可以考虑使用异步处理的方式,减少整个业务流程的响应时间,减少系统之间的耦合度,把一个原来的长链路改成中短链路,也可以提高请求的可靠性。如图所示:

2、应用解耦

上述例子也提到,对于用户一次请求中的非必须业务节点,可以引入消息队列,减少系统之间的高耦合,同时也避免由于下游系统出现故障而丢失消息的情况。如下图所示:

3、流量削峰

在秒杀活动中可能会因为流量过大导致应用挂掉,可以在后端应用前端加入消息队列,然后设定阈值控制活动人数,超过阈值的订单可以直接丢弃,达到后端应用按照实际处理能力获取订单的目的。如下图所示:

三、mq框架的性能指标

性能指标ZeroMqRabbitMqActiveMq

TPS比较

最好最差
消息持久化不支持支持支持
可靠性;灵活的路由;集群;事务;高可用的队列;消息排序;问题追踪;可视化管理工具;插件系统;社区最差最好一般
高并发最差最好一般

四、相关概念:

rolefunctionrelationship
producerClients that is application to produce messagesone producer can match more exchanges
exchangeto route and filter messagesan exchanges can match more queues
queueto store and forward messagesa queue can match more consumers
consumerclients that is application to consume messages 
binding key

the key can distinguish which message to match with;

binding key can match the position of a exchange and a queue

(e.g. binding key=bk_A match ex_A and q_A;

binding key=bk_B match ex_A and q_B;

binding key=bk_B match ex_A and q_A)

an exchange can have more binding keys;

a queue and have more binding keys;

具体如下图所示: 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值