WebLogic JMS实例:点对点与发布订阅模型详解

4星 · 超过85%的资源 需积分: 10 55 下载量 194 浏览量 更新于2024-09-11 收藏 54KB DOC 举报
Java-JMS实例是一篇详细介绍Java消息服务(Java Message Service, JMS)的文章,针对的是IT专业人士和希望了解如何在企业级应用中利用JMS进行消息传递的开发者。JMS是Java平台上的标准API,它使得Java应用程序能够与消息队列和消息代理(如Apache ActiveMQ、RabbitMQ或WebLogic Server中的JMS Server)无缝交互,实现异步通信和解耦。 文章首先概述了JMS的基本概念。JMS的核心目标是简化跨系统间的通信,提供统一的接口让开发者能够生产、发送、接收消息,无论底层的消息传递机制如何变化。JMS支持两种主要的通信模型:点对点(Point-to-Point, PTP)和发布/订阅(Publish/Subscribe, Pub/Sub)。在PTP模式中,每条消息只能有一个接收者,而在Pub/Sub模式下,一个消息可以被多个接收者同时接收,提高了消息的灵活性。 接着,文章重点介绍了WebLogic JMS Server,这是Oracle WebLogic Server的一部分,遵循JMS规范并支持集群环境,适合部署在企业级系统中。WebLogic JMS Server的架构包括服务器本身、客户端、Java Naming and Directory Interface (JNDI)用于查找命名服务,以及备份存储(如文件系统或JDBC数据库),确保消息的可靠性和持久性。 文章深入探讨了WebLogic JMS的特性,如消息通信模型的差异,以及消息本身的构成。消息由头(header)、属性(property)和主体(body)三部分组成。头部分用于标识和路由消息,而属性允许用户自定义消息的元数据;主体则是实际的数据内容,可以是各种Java类型,包括对象。JMS还定义了一组标准属性供供应商实现,以便于应用程序间的消息管理和操作。 这篇Java-JMS实例提供了实用的指南,帮助读者理解JMS的核心概念,学习如何在WebLogic Server环境中有效地使用JMS进行消息传递,从而提高企业应用的可扩展性和灵活性。通过阅读和实践这些实例,开发者能够更好地构建健壮、可靠的分布式系统。
2015-07-27 上传
ActiveMQ安装 : 1.下载:http://activemq.apache.org/download.html 最新Windows版本 2.配置jdk环境,解压ActiveMQ到本地 3.启动ActiveMQ服务器: 32位机 : 直接运行\bin\win32\activemq.bat 64位机 : 直接运行\bin\win64\activemq.bat 4.打开ActiveMQ消息管理后台系统 http://localhost:8161/admin/ 参考文章为 : HelloWorld : http://blog.csdn.net/baggio7095586/article/details/5708519 进阶 :http://haohaoxuexi.iteye.com/blog/1893038 helloworld阶段 : 一个发送消息的程序,一个接收消息的程序..实现最简单的JMS交流... 监听器阶段 : ⑴MessageListener,最简单的监听器..只是拿来监听接收信息的 ⑵SessionAwareMessageListener,有个session的参数..可以拿来对接收到的信息再做响应.. ⑶MessageListenerAdapter,将消息委托交给一个普通的java类来处理.. 转化器阶段 : 实现MessageConverter接口来转换JMS对象与java对象.. 其实在使用MessageListenerAdapter时,Spring默认为我们提供了SimpleMessageConverter转换器.. 事务(无代码): 在Spring整合JMS的应用中,如果我们要进行本地的事务管理的话非常简单,只需要在定义对应的消息监听容器时指定其sessionTransacted属性为true,如: <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="queueDestination" /> <property name="messageListener" ref="consumerMessageListener" /> <property name="sessionTransacted" value="true"/> </bean> 该属性值默认为false,这样JMS在进行消息监听的时候就会进行事务控制,当在接收消息时监听器执行失败时JMS就会对接收到的消息进行回滚, 对于SessionAwareMessageListener在接收到消息后发送一个返回消息时也处于同一事务下,但是对于其他操作如数据库访问等将不属于该事务控制。 数据库跟JMS挂钩的事务先别理..