从ActiveMQ认识JMS
来源:互联网 发布:淘宝买家秀 编辑:程序博客网 时间:2024/06/09 13:43
随着分布式系统的规模和复杂度提高,往往会出现如下问题:(1)系统间同步通信,客户端发出调用后,必须等到服务对象完成处理并返回结果后才能继续执行;(2)服务端和客户端强耦合,后端一旦出现故障,前台将会牵扯进来;(3)客户的一次调用只能发送给单独目标对象。在这样的环境下,面向消息的中间件就应运而生了。
1. 什么是消息中间件?有什么特点?
很容易理解,消息中间件,就是将程序从一个程序传送到另一个或者多个应用程序。突出的特点为:
(1)消息异步传输,降低多系统间的耦合度
(2)消息可靠接收,使用事务,确保接收方收到消息后才取消消息,多个消息可以组成原子事务
2. 什么是JMS?有什么优势特性?
JMS定义了java中访问消息中间件的接口!优势特性:
(1)可靠性机制:只有被确认,才能成功消费。消息会话机制分为两种:一是事务性会话,事务提交,成功消费自动提交;二是非事务性会话,包含三种会话应答模式:AUTO_ACKNOWLEDGE自动确认,客户端发送和接收不需要额外操作;CLIENT_ACKNOWLEDGE,客户端接收消息后,必须调用javax.jms.Message的acknowledge方法才能确认消息消费成功;DUPS_OK_ACKNOWLEDGE允许副本确认模式,接收方应用程序方法调用从处理消息处返回,会话对象就会确认消息接收,且允许重复确认。
(2)持久性机制:如果为persistent,即使jms provider挂了,重启,未被消费的消息任然存在,且默认情况下就是持久化存储。如果为non_persistent,则不要求JMS provider持久保存消息。
(3)优先级机制:10个,从0到9,默认为4,但JMS Provider有时候并不会按照优先级顺序提交消息。
(4)消息过期机制:可设置一定时间后自动过期,只有在有效时间内,消费者才可以消费消息。
(5)本地事务:一组操作均完成后才能提交。
3. 常用的消息队列有哪几种?各有什么优缺点?
经常使用的JMS有ActiveMQ,RabbitMQ,RocketMQ;
ActiveMQ是apache公司下成熟的消息中间件产品,功能齐全被大多数公司引进;社区活跃度高,也成熟,最重要的是支持的协议和java语言较多,持久化方式多种多样(包括内存,文件,数据库);但是ActiveMq不适合上千队列的应用场景。
RabibitMQ是Erlang语言开发,并发能力强,处理性能好,管理界面丰富,在互联网公司也有大规模引用,但它不支持事务,集群无法做到动态扩展。
RocketMQ是Alibaba公司提供,模型简单,接口易用,性能非常好,可以大量堆积消息在boker中,支持多种消费,集群消费;但是它内容较新,没有实现JMS接口,对已有系统无法兼容。在支持的协议上有自己定义的一套,部分内容未公开。
- 从ActiveMQ认识JMS
- servlet和jms从activemq监听消息
- JMS ActiveMQ
- JMS ActiveMQ
- JMS ActiveMQ
- JMS activeMQ
- JMS------ActiveMQ
- JMS activeMQ
- JMS-ActiveMQ
- 认识ActiveMQ
- 【ActiveMQ】认识ActiveMQ
- Jms---ActiveMQ学习笔记
- jms activeMQ 应用
- jms activeMQ 应用
- [JMS] ActiveMQ -- 入门
- JMS-ActiveMQ入门
- activeMQ-JMS备忘录
- ActiveMq实现JMS
- app已安装检测技术原理
- C++中delete和delete[]的区别
- JS对象深度拷贝
- Android String转二维码
- MySQL索引原理及慢查询优化
- 从ActiveMQ认识JMS
- XYNUOJ 1096: 习题6-10 字符统计 输出结果为三行分别输出
- 解决nginx的The page you are looking for is temporarily unavailable错误办法
- JavaScript 通常用于操作 HTML 元素
- Linux驱动层调用应用层程序--call_usermodehelper()
- 找错:ZdalRuleCalculateException: 规则引擎计算出错,拆分值=
- vue-cli 使用vue-bus来全局控制
- Angular2是可怕的
- ES2016 新特性:求幂运算符(**)