PooledConnectionFactory实现ConnectionFactory接口。为因JmsTemlate每次发送消息时都会重新创建连接,创建connection,session,创建productor。这是一个非常耗性能的地方,特别是大数据量的情况下。因此出现了PooledConnectionFactory。这个类只会缓存connection,session和productor,不会缓存consumer。因此只适合于生产者发送消息。那为什么不缓存consumer呢?官方解释是由于消费者一般是异步的,也就是说,broker代理会把生产者发送的消息放在一个消息者的预取缓存中。当消息者准备好的时候就会从这个预取缓存中取出来进行处理。我想,这个只是在要求消息处理的及时性不是特别高的情况下。如果希望处理能够提高速度,自然也可以从这部分提高效率,减小不断创建consumer的时间(大数据量的情况下)。
CachingConnectionFactory类扩展自SingleConnectionFactory,主要用于提供缓存JMS资源功能。具体包括MessageProducer、MessageConsumer和Session的缓存功能。
publicclassCachingConnectionFactoryextendsSingleConnectionFactory{
privateint sessionCacheSize =1;
privateboolean cacheProducers =true;
privateboolean cacheConsumers =true;
privatevolatileboolean active =true;
privatefinalMap cachedSessions =newHashMap();
Spring中发送消息的核心是JmsTemplate,然而Jmstemplate的问题是在每次调用时都要打开/关闭session和producter,效率很低,所以引申出了PooledConnectionFactory连接池,用于缓存session和producter。然而这还不是最好的。从spring2.5.3版本后,Spring又提供了CachingConnectionFactory,这才是首选的方案。然而CachingConnectionFactory有一个问题必须指出,默认情况下,CachingConnectionFactory只缓存一个session,在它的JavaDoc中,它声明对于低并发情况下这是足够的。与之相反,PooledConnectionFactory的默认值是500。这些设置,在很多情况下,需要亲自去测试并验证。我将其设置为100,对我来说还是很不错。
SingleConnectionFactory类实现了ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory,ExceptionListener接口。
Spring提供ConnectionFactory接口的一个实现,SingleConnectionFactory, 它将在所有的createConnection()调用中返回同一个相同的共享连接对象, 并且忽略Connection.close()和stop()的调用。根据JMS连接模型,这是完全线程安全的(相反,如JDBC)。这个共享连接能够在出现异常时自动恢复创建一个新的共享连接。可以通过SingleConnectionFactory的构造函数中传入Connection对象或者 ConnectionFactory对象,用来创建被代理的连接对象。 SingleConnectionFactory.createConnection方法返回的连接是个代理,它忽略了对stop和close方法的调用 (连接会在SingleConnectionFactory.destroy方法中关闭)。
protectedConnection getSharedConnectionProxy(Connection target){
List classes =newArrayList(3);
classes.add(Connection.class);
if(target instanceofQueueConnection){
classes.add(QueueConnection.class);
}
if(target instanceofTopicConnection){
classes.add(TopicConnection.class);
}
return(Connection)Proxy.newProxyInstance(
Connection.class.getClassLoader(),
(Class[]) classes.toArray(newClass[classes.size()]),
newSharedConnectionInvocationHandler(target));
}
这在测试和独立的环境中相当有用, 因为同一个连接可以被用于跨多个监听容器的JmsTemplate调用以跨越多个事务。 SingleConnectionFactory接受一个通常来自JNDI的标准ConnectionFactory的引用。
另外spring的消息监听容器都支持一个共享的connection在多个监听容器中使用。结合SingleConnectionFactory才真正让人感受到跨多个监听容器共享同一个JMS连接的功能。
在Java EE环境中,SingleConnectionFactory将把Connection和Session放到缓冲池中,因此这些资源在事务中得到了有效的复用。在独立环境中使用Spring的 SingleConnectionFactory 会存在共享的JMS Connection,但每个事务有自己独立的 Session。另外可以考虑使用供应商特定的池适配器,,如ActiveMQ的 PooledConnectionFactory 类。
SingleConnectionFactory的reconnectOnException属性用来指定是否在连接抛出JMSException的时候,对连接进行重置,重置后如果再调用createConnection方法,那么会返回一个新的连接。
SingleConnectionFactory不支持定义用户名和密码。
相关推荐
TopN问题分析和单元实践练习
操作系统学习
01人工智能学习前言 02文字朗读 03文字翻译 04语音识别 05超级翻译官 06专家系统 07视觉识别01初探 08视觉识别02人脸追踪 09视觉识别03人脸检测 10视觉识别04特定人脸辨认 11视觉识别05识别车牌 12视觉识别06识别印刷体文字
虚幻引擎深度开发实践:次世代实时交互系统的架构设计与性能调优
社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。本次开发一套高校教师科研管理系统有管理员,教师,学院三个角色。管理员功能有个人中心,教师管理,学院管理,科研课题管理,软件著作权管理,论文信息管理,专利信息管理,科研成果管理,科研课题校审管理,著作权校审管理,论文校审管理,专利校审管理,科研成果校审管理。教师和学院都可以注册登录,教师可以提交科研课题,软件著作权,论文信息,专利信息,科研成果信息,学院主要审核教师提交的一切信息。高校教师科研管理系统服务端用Java开发,用Spring Boot框架开发的网站后台,数据库用到了MySQL数据库作为数据的存储。这样就让用户用着方便快捷,都通过同一个后台进行业务处理,而后台又可以根据并发量做好部署,用硬件和软件进行协作,满足于数据的交互式处理,让用户的数据存储更安全,得到数据更方便。 关键字:高校教师科研管理系统;Spring Boot框架;Java;MySQL
操作系统学习
内容概要:文档主要介绍了一种详细的系统需求说明书模版,涵盖项目的多个重要组成部分,如系统概述、功能需求、安全性和性能需求等方面。每个部分都进行了详细地说明与规范。其中包括对业务描述及需求分析,系统的目标及角色,页面定义与页面间的流转,报表的设计及其需求详述,系统间的数据交换方法和对各种环境的要求及安全性考虑。文档提供了清晰的内容布局,有助于理解和实施特定任务或项目。同时文档还包括了详细的表格格式用于指导功能的具体表述。 适合人群:适用于参与项目的管理人员和技术开发团队成员,在项目早期阶段,通过这份文档,可以使所有相关人员清楚了解到该项目的技术要求和预期成果,以确保后续开发工作的顺利开展。 使用场景及目标:适用于需要创建复杂IT系统的团队,在制定详细需求说明时以此作为蓝图。这不仅可以帮助建立有效的项目管理规划,同时也保证了项目交付时的可靠性和稳定性。 其他说明:这份模版旨在提高工作效率并减少重复劳动,鼓励使用者在此基础上进一步定制和完善自身的工作流程。
Swift-Button封装
数据结构学习
内容概要:本文档主要围绕项目开发流程管理展开,旨在优化各个职能角色(包括产品经理、交互设计师、UI设计师、开发人员、前端工程师和测试人员)之间的协作效率并规范各自职责。通过明确规定各项任务的责任归属以及所需产生的具体成果(比如:需求文档、交互设计稿、效果图和API文档等),从而减少误解导致的反复工作,提高沟通效率及确保每个环节所形成的内容都能够成为后续工作的依据而非事后补录。此外,该指南还提供了当特定职位缺席时替代方案和跨部门协作时需要注意事项的具体指示。 适合人群:适用于希望提升团队协作水平和管理效能的技术团队领导、项目经理或者企业内部的IT相关部门。 使用场景及目标:为正在实施新系统的组织提供了一个详尽而实用的指导方针;帮助团队更好地规划和执行从初步调研直到最终发布的完整周期;明确了各个环节负责人应当完成的任务清单,使各方能够更加专注于自己的专业技能发挥而不必担心由于衔接不当所带来的额外工作量;同时也便于客户实时跟踪项目的最新状态以便做出相应决策支持。 其他说明:本规范强调了在整个过程中对于重要输出物如文档记录的重要性,鼓励所有参与者共同参与决策过程并且保持信息共享以保证整个项目的
PHP语言教程,语法,入门教程
数据结构学习
adb调试桥安装包,移动端和PC的桥梁
数据结构学习
MPU6000andMPU6050产品和数据手册
内容概要:本文详细介绍了针对文件上传下载的功能性和非功能性测试用例设计方法。主要内容包括针对上传文件的不同类型(jpg/gifs等格式)、不同尺寸以及特殊情形,如零字节文件或使用中文件的上传测试案例;导出测试方面则聚焦于文件名的合法性检测、导出内容的一致性以及在极端情况如满盘状态下的行为验证等方面的具体措施。此外,还提供了具体页面、按钮和功能测试的关键关注点和测试标准,强调测试覆盖到每一个环节,确保系统的稳定性和易用性。 适合人群:从事质量保证工作的专业人员,尤其适用于具有一定软件测试经验的技术人员。 使用场景及目标:①用于指导QA团队建立和完善产品文件操作模块的测试计划,提高产品质量;②帮助企业制定有效的测试方案以评估第三方组件的安全性和兼容性。 其他说明:除了传统测试要点外,本文也涉及了安全性方面的考量(例如防止恶意文件注入)和用户体验(如界面友好性)。这有助于构建既安全又便捷的Web应用程序和服务平台,确保用户能在各类网络环境下顺利完成所需的文件传输任务。
特易通国产对讲机A8_setup v1.0中英写频软件
数据结构学习
内容概要:本文档为《基于大数据平台的自动化营销管控及辅助决策研究和试点应用业务需求规格说明书》,详细阐述了一个面向电力企业的大型信息化建设项目的内容。该项目旨在利用大数据技术和现有营销数据资源,构建一个能够自动预警高峰用电、预测销售电量及其平均价格与总收入,管理电费欠费风险、预测客户安全用电隐患以及指导业扩报装活动的应用系统。通过本系统的建设可以提升企业的管理水平和决策精准度。文档覆盖了系统建设的背景意义、总体目标和技术路径,并深入探讨现状挑战,在此之上细化描述业务流程和操作细节,提供了丰富的信息详单及数据表格,用于指导具体的开发建设流程。 适合人群:从事电力营销管理和系统集成的高级管理人员、IT技术人员、系统分析师、项目经理等. 使用场景及目标:帮助企业管理层理解业务需求和信息化实施的重点难点,为技术团队提供详尽的技术指引和实现蓝图,为业务用户梳理具体的操作步骤。 其他说明:文中大量列举实际工作环节的具体流程,有助于相关人员更好地理解和掌握系统功能特性,也为系统的后期维护和支持提供重要依据。此外,文档还指出了预期成效,即实现更高效精确的市场营销与风险防控。
特易通国产对讲机MD446(TYT) v01.29中英写频软件