网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.java入门与加深(上)(1).
.Java对Domino Objects的访问控制.
.JDOM / XPATH 编程入门引导攻略.
.学习心得:Java基本功之Referenc.
.EJB系列教程之二.
.Java应用中的反模式开发介绍.
.使用Java操作Windows系统注册表.
.Java新手入门——整理的SCJP听课.
.Java Socket编程(五)简单的WEB.
.使用MIDP2.0开发游戏(4)改进的地.
.如何使用JSTL标签做页面资源国际.
.J2ME网络应用程序在几款机器下性.
.在运行时将大图分割为小图片数组.
.Java核心代码例程之:DateFormat.
.J2ME 2D小游戏入门之计时器.
.Tomcat5的web应用启动顺序详解.
.精通ejb【八】.
.Java串行端口通讯技术.
.Hibernate 使用外部 Connection .
.Java 从老虎变野马?好事还是坏事.

Java消息服务基础

发表日期:2008-1-5



  在不同系统之间交换信息的一大障碍是如何在精确交换和格式化数据方面取得一致。Java Message Service( Java消息服务,简称JMS)通过提供一种与J2EE应用程序或传统系统交互的方法部分的解决了这个问题。

  JMS的通用接口集合以异步方式发送或接收消息。异步方式接收消息显然是使用间断网络连接的客户机,诸如移动电话和PDA的最好的选择。另外, JMS采用一种宽松结合方式整合企业系统的方法,其主要的目的就是创建能够使用跨平台数据信息的、可移植的企业级应用程序,而把开发人力解放出来。

  Java消息服务支持两种消息模型:Point-to-Point消息(P2P)和发布订阅消息(Publish Subscribe messaging,简称Pub/Sub)。JMS规范并不要求供给商同时支持这两种消息模型,但开发者应该熟悉这两种消息模型的优势与缺点。

  P2P消息模型是在点对点之间传递消息时使用。假如应用程序开发者希望每一条消息都能够被处理,那么应该使用P2P消息模型。与Pub/Sub消息模型不同,P2P消息总是能够被传送到指定的位置。

  Pub/Sub模型在一到多的消息广播时使用。假如一定程度的消息传递的不可靠性可以被接受的话,那么应用程序开发者也可以使用Pub/Sub消息模型。换句话说,它适用于所有的消息消费程序并不要求能够收到所有的信息或者消息消费程序并不想接收到任何消息的情况。

  JMS通过答应创建持久订阅来简化时间相关性,即使消息预订者未激活也可以接收到消息。此外,使用持久订阅还可通过队列提供灵活性和可靠性,而仍然答应消息被发给许多的接收者。
Topic Subscriber topic Subscriber =
topicSession.createDurableSubscriber(topic, subscriptionName);

  Connection对象表示了到两种消息模型中的任一种的消息系统的连接。服务器端和客户机端对象要求治理创建的JMS连接的状态。连接是由Connection Factory创建的并且通过JNDI查寻定位。

//取得用于 P2P的 QueueConnectionFactory
QueueConnectionFactory = queueConnectionFactory( );
Context messaging = new InitialContext( );
QueueConnectionFactory = (QueueConnectionFactory)
Messaging.lookup(“QueueConnectionFactory”);

//取得用于 pub/sub的 TopicConnectionFactory
TopicConnectonFactory topicConnectionFactory;

Context messaging = new InitialContext();
topicConnectionFactory = (TopicConnectionFactory)
messaging.lookup(“TopicConnectionFactory”);

  注重:用于P2P的代码和用于PublishSubscribe的代码非常相似。

  假如session被标记为transactional的话,确认消息就通过确认和校正来自动地处理。假如session没有标记为 transactional,你有三个用于消息确认的选项。

  · AUTO_ACKNOWLEDGE session将自动地确认收到一则消息。

  · CLIENT_ACKNOWLEDGE 客户端程序将确认收到一则消息,调用这则消息的确认方法。

  · DUPS_OK_ACKNOWLEDGE 这个选项命令session“懒散的”确认消息传递,可以想到,这将导致消息提供者传递的一些复制消息可能会出错。这种确认的方式只应当用于消息消费程序可以容忍潜在的副本消息存在的情况。

queueSession = queueConnection.createQueueSession(false, session.AUTO_ACKNOWLEDGE);//P2P

topicSession = topicConnection.createTopicSession(false, session.AUTO_ACKNOWLEDGE); //Pub-Sub

  注重:在本例中,一个session目的从连结中创建,非值指出session是non-transactional的,并且 session将自动地确认收到一则消息。


  JMS现在有两种传递消息的方式。标记为NON_PERSISTENT的消息最多投递一次,而标记为PERSISTENT的消息将使用暂存后再转送的机理投递。假如一个JMS服务离线,那么持久性消息不会丢失但是得等到这个服务恢复联机时才会被传递。所以默认的消息传递方式是非持久性的。即使使用非持久性消息可能降低内务和需要的存储器,并且这种传递方式只有当你不需要接收所有的消息时才使用。

  虽然 JMS规范并不需要JMS供给商实现消息的优先级路线,但是它需要递送加快的消息优先于普通级别的消息。JMS定义了从0到9的优先级路线级别,0是最低的优先级而9则是最高的。更非凡的是0到4是正常优先级的变化幅度,而5到9是加快的优先级的变化幅度。举例来说:

topicPublisher.publish (message, DeliveryMode.PERSISTENT, 8, 10000); //Pub-Sub

queueSender.send(message, DeliveryMode.PERSISTENT, 8, 10000);//P2P


上一篇:破除Java神话之三 人气:405
下一篇:java实现屏幕取色 人气:551
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐