热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从ActiveMQ认识JMS

随着分布式系统的规模和复杂度提高,往往会出现如下问题:(1)系统间同步通信,客户端发出调用后,必

           随着分布式系统的规模和复杂度提高,往往会出现如下问题:(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接口,对已有系统无法兼容。在支持的协议上有自己定义的一套,部分内容未公开。



      

          


        

       


  


      


推荐阅读
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 使用WinForms 实现 RabbitMQ RPC 示例
    本文通过两个WinForms应用程序演示了如何使用RabbitMQ实现远程过程调用(RPC)。一个应用作为客户端发送请求,另一个应用作为服务端处理请求并返回响应。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
author-avatar
风云变幻1892_602
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有