-
关于JMS规范和多线程的一些疑问。30
在JMS规范中
ConnectionFactory
Destination(Queue和Topic)
认为是可以受管的,在服务器上可以使用jndi访问。
然后根据JMS规范的描述
ConnectionFactory
Connection
Destination(Queue和Topic)
都是线程安全的,也就是说多个线程公用不会造成并发访问控制的问题。
但是Session对象不是线程安全的,每个Thread都应当有自己的Session,才不会造成并发访问下的异常。
我的问题来了:根据目前我手上的api,不在容器中的话,只有用
Queue sessioncreateQueue(java.lang.String queueName) 和 Topic createTopic(java.lang.String topicName)
才能拿到Destination(Queue和Topic)的对象。而Destination(Queue和Topic)又是可以被多线程共享的。
那我如果再程序中想共享Destination(Queue和Topic)岂不是应该先用Connection去获得Session,然后用Session获得Destination(Queue和Topic)。然后再去关闭Session?
那也就是说说明根据JMS Destination(Queue和Topic) 虽然依赖于 Session创建,但是在使用的时候其实是和Session无关的?
另外还有个小问题是多线程使用同一个Connection对象,创建的Session读取消息时,应该是不会出现并发控制的问题吧?
2012年7月18日 17:23
2个答案 按时间排序 按投票排序
-
如果用同一个connection创建session的话,应该每次都会是一个新的session,所以不会有并发的产生,但使用同一个connection会有风险,就是要么持久连接,要么你关掉连接时,另外一个线程会获取不到连接的,所以我觉得应该是每个线程要维护自己的连接,自己用完,自己关掉
2014年8月01日 15:58
-
我自己写了段代码测了下,destination 创建好后,是共享的,我在main程序里面新建了两个producer线程,和一个consumer线程,都传一个共同的destination过去,结果我在http://localhost:8161上看到的destination 处理的数据和我发过去的数据都对的上
2014年8月01日 15:49
相关推荐
EJB中用JMS模拟多线程机制的设计和实现 作者:高燕 李旭伟 文震 来源:工业技术 / 自动化技术、计算机技术收藏本文章 多线程机制是提高系统执行效率的关键,但对于采用EJB技术的服务器端,由于EJB规范限制使用多线程...
JMS规范中还定义了一些新的特性,它们包括对消息确认和选择机制的改进,以及对消息持久性和消息域继承方法的增强。例如,JMS1.1版本提供了更多控制消息选择器和消息确认选项的功能,使得开发人员可以更灵活地处理...
JMS1.1规范是该API的一个版本,提供了标准接口,使得不同的消息中间件(Message Oriented Middleware,MOM)提供商能够实现互操作性,确保应用程序可以在不同平台之间无缝地发送和接收消息。 JMS1.1规范的核心概念...
- **版本更新:** JMS 1.1相对于早期版本,增加了新的特性以增强其功能性和灵活性,例如支持更多的消息类型、改进的安全性和多线程支持等。 #### 二、架构 **2.1 概述** - **架构概述:** 该部分详细介绍了JMS的...
对于多线程问题,JMS提供了同步和异步消息传递两种方式,允许开发者根据需要选择合适的消息传递机制。 消息确认机制是JMS中的一个重要部分,它保证消息至少被处理一次。JMS规范定义了几种确认模式,包括自动确认、...
### JMS规范详解 #### 一、概述 Java消息服务(Java Message Service,简称JMS)是Java平台中关于面向消息中间件(MOM)的API,...无论是初学者还是有经验的开发人员,深入理解JMS规范都是提高项目效率和质量的关键。
JMS规范2.0版是这个领域的最新标准,它为开发者提供了在分布式环境中可靠地发送和接收消息的接口。这个压缩包包含了JMS 2.0的中英文文档以及相关的JavaDoc,有助于开发者深入理解和使用JMS API。 首先,我们来详细...
通过深入理解和掌握JMS规范,开发者可以在分布式系统中构建健壮、可靠的通信机制,提升系统的稳定性和可扩展性。在实际开发中,结合具体的消息中间件,可以根据项目需求选择适合的通信模式和功能,实现高效的信息...
**JMS规范培训教程** Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准API。它允许应用程序创建、发送、接收和读取消息,以此来解耦应用程序之间的通信。在JMS中,...
在JMS规范中,消息服务器通常被称为消息代理或消息队列,例如ActiveMQ、RabbitMQ和IBM WebSphere MQ等。这些代理提供了对消息存储、路由和传输的支持。消息队列(Queue)和主题(Topic)是JMS中的关键组件。队列遵循...
通过以上解析,我们可以看到JMS规范教程详细介绍了JMS的基本概念、消息模型以及通用设施,为开发者提供了构建和理解JMS应用程序所需的关键知识。JMS不仅提供了消息传递的基础结构,还涵盖了消息的管理和控制,使得...
本教程通过视频形式深入讲解了ActiveMQ的使用和JMS规范的相关知识。 Java消息服务(JMS)是Java平台中用于企业级应用集成的API,它定义了一组标准接口,使得应用程序可以与各种消息队列系统进行交互。JMS的核心概念...
JMS的跨平台性是通过其纯Java接口实现的,这意味着任何实现了JMS规范的提供商都可以在不同的操作系统和硬件平台上运行,只要它们都支持Java。这为开发者提供了极大的灵活性,可以在多种环境中部署和运行JMS应用程序...
作者:卫建军 Java 是当前 IT 领域中比较流行的技术之一。J2EE 是当前比较流行的企业级应用架构。 本人一直致力于 J2EE 架构的学习和研究,但是总是对英文文档...持久化规范》和《JMS1.1 规范》。希望对大家有所帮助。
SUN JMS 1.1是JMS的一个早期版本,它定义了JMS接口的详细规范,包括连接工厂、会话、消息生产者、消息消费者、消息和目的地等关键对象的创建和使用。这个版本引入了对事务处理的增强,以及更灵活的消息选择机制。 ...
ActiveMQ 是一个开源的消息中间件,它遵循开放消息模型(JMS)标准,提供高性能、高可用性和可扩展性的消息传递服务。在这个项目中,我们看到的是一个自己实现的 ActiveMQ 客户端,它特别关注多线程的实现,这在处理...
JMS1.1是该规范的一个重要版本,为开发人员提供了一套统一的消息传递模型,以实现异步通信和解耦系统组件。 JMS1.1规范的核心概念包括消息、生产者、消费者、队列和主题。消息是数据传输的基本单位,它可以是文本、...
- 多线程环境下,JMS提供了对消息监听的支持,允许在一个线程中接收消息,同时另一个线程处理这些消息。 - **触发式客户端:** JMS支持异步消息处理,即客户端可以在接收到消息时自动触发相应的消息处理方法。 - ...