在不同系统之间交换信息的一大障碍是如何在精确交换和格式化数据方面取得一致。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将自动地确认收到一则消息。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器