1 企业消息系统
1.1 面向消息的中间件(MOM)
1.2 提供了基于存储和转发的应用程序之间的异步数据发送
1.3 特点
1.3.1 消息灵活性
1.3.1.1 如果网络不可用,mom可以存储消息知道链接可用再发送给接收者
1.3.1.2 发送消息时,接收者可以不再执行状态,mom将保留消息直到接收者检索消息为止
1.3.2 松耦合
1.3.2.1 可以随时替换消息接收者
1.3.3 pub/sub 发布和订阅
1.3.3.1 mom起到代理作用将一个主题已发表的消息发送给所有该主题的订阅者
2 概述
2.1 应用程序组成
2.1.1 jms客户机
2.1.1.1 用jms发送和接受消息的java程序
2.1.2 非jms客户机
2.1.3 消息
2.1.4 jms提供者
2.2 管理对像
2.2.1 ConnectionFactory
2.2.1.1 用于创建到消息提供者的底层消息系统的链接
2.2.2 Destination
2.2.2.1 指定发送消息的目的地或接受消息的来源
2.3 接口
2.3.1 ConnectionFactory
2.3.1.1 创建Connection的受管理对象
2.3.1.2 ptp:QueueConnectionFactory
2.3.1.3 pub/sub:TopicConnectionFactory
2.3.2 Connction
2.3.2.1 到提供者的活动连接
2.3.2.2 ptp:QueueConnection
2.3.2.3 pub/sub:TopicConnection
2.3.3 Destination
2.3.3.1 封装消息目的地的受管理对象
2.3.3.2 ptp:Queue
2.3.3.3 pub/sub:Topic
2.3.4 Session
2.3.4.1 发送和接收消息的单线程环境
2.3.4.2 ptp:QueueSession
2.3.4.3 pub/sub:TopicSession
2.3.5 MessageProducer
2.3.5.1 用于发送消息
2.3.5.2 ptp:QueueSender
2.3.5.3 pub/sub:TopicPublisher
2.3.6 MessageConsumer
2.3.6.1 用于接收消息
2.3.6.2 ptp:QueueReceiver,QueueBrowser
2.3.6.3 pub/sub:TopicSubscriber
2.4 开发jms程序步骤
2.4.1 通过jndi查询ConnectionFactory
2.4.2 通过jndi查询一个或多个destination
2.4.3 用ConnectionFactory创建一个Connection
2.4.4 用Connection创建一个或多个Session
2.4.5 用session和Destination创建所需要的MessagePriducer和MessageConsumer
2.4.6 启动Connection
2.5 Message接口
2.5.1 所有消息都是从该接口继承
2.5.2 组成
2.5.2.1 header
2.5.2.1.1 一组标准字段,用于标识和路由消息
2.5.2.1.2 String:JMSMessageID:唯一标识提供者发送的每条消息,由提供者设置,client只能在 message 发送后才能确定id
2.5.2.1.3 Destination:JMSDestination:消息发送的目的地,由提供者设置
2.5.2.1.4 int:JMSDeliverMode:传递模式,可能值->DeliveryMode.PERSISTENT(只被传递一次),
DeliveryMode.NON_PERSISTENT(最多传递一次,可能不传递)
2.5.2.1.5 long:JMSTimestamp:发送消息的时间,由提供者设置
2.5.2.1.6 long:JMSExpiration:消息失效时间,值是在发送过程中计算的,是发送方法的生存时间 (time-to-live)值和当前时间值的和
2.5.2.1.7 int:JMSPrioritymessage优先级,由提供者设置,0为最低,9为最高
2.5.2.1.8 String:JMSCorrelationID:用来链接响应消息与请求消息,发送消息的 JMS 程序设置
2.5.2.1.9 Destination:JMSReplyTo:回复消息应发送的地方,由发送消息的 JMS 程序设置
2.5.2.1.10 String:JMSType:消息的类型,一些提供者维护着一个消息类型仓库,并用该字段引用仓库中的定义类型,JMS 程序不应该使用这个字段
2.5.2.1.11 boolean:JMSRedelivered:是否多次传递
2.5.2.2 Properties
2.5.2.2.1 添加标准字段之外的header
2.5.2.2.2 标准属性
2.5.2.2.2.1 String:JMSXUserID:发送消息的用户的身份
2.5.2.2.2.2 String:JMSXApplID:发送消息的应用程序的身份
2.5.2.2.2.3 int:JMSXDeliveryCount:已经尝试发送消息的次数
2.5.2.2.2.4 String:JMSXGroupID:消息组id
2.5.2.2.2.5 int:JMSXGroupSeq:消息组序号
2.5.2.2.2.6 String:JMSXProducerTXID:生成消息的事务身份
2.5.2.2.2.7 String:JMSXConsumerTXID:使用该消息的事务的身份
2.5.2.2.2.8 Long:JMSXRcvTimestamp:将消息发送给客户的时间
2.5.2.3 body
2.5.2.3.1 包含将发送到接收应用程序的内容。每一个消息接口都专用于它所支持的内容类型
2.5.2.3.2 格式
2.5.2.3.2.1 每一种格式都是由一个扩展 Message 的接口定义的
2.5.2.3.2.2 StreamMessage:包含一组 Java原始值,这些值是通过标准流操作按顺序进行填充和读取的。
2.5.2.3.2.3 MapMessage:包含一组名称-值对,名称是 string,值是 Java 原始值
2.5.2.3.2.4 TextMessage:包含一个String
2.5.2.3.2.5 ObjectMessage:包含一个Serializable Java 对象
2.5.2.3.2.6 BytesMessage: 包含一些未解释字节
2.6 事务
2.6.1 将一组已产生的消息和一组已使用的消息组织为原子工作单位
2.6.2 Session 对象控制事务,创建 Session 时将它标注为 transacted
2.6.3 已处理的 Session 总是有一个当前事务,也就是说,它begin();commit() 和 rollback() 可以终止一个
事务并自动开始另一个事务
2.7 确认
2.7.1 通知提供者已经成功接收到消息的一种机制
2.7.2 被处理的是接收消息的 Session ,则确认的处理是自动的
2.7.3 如果被处理的不是 Session ,则在创建 Session 时确定确认的类型
2.7.4 类型
2.7.4.1 Session.DUPS_OK_ACKNOWLEDGE:消息发送的延迟回执,它通过最小化工作的重复来减少开销,只有在可以预计和处理重复消息时,才可以使用这种确认
2.7.4.2 Session.AUTO_ACKNOWLEDGE:完成接收消息的方法时自动确认消息的发送
2.7.4.3 Session.CLIENT_ACKNOWLEDGE:通过调用 Message 的 acknowledge() 方法显式确认消息发送
2.8 消息选择
2.8.1 对收到的消息进行过滤和分类
2.8.2 消息选择器是一个包含表达式的 String ,该表达式的语法是基于 SQL92 的子集的
2.8.3 选择是基于与标题字段和属性的匹配度的,正文值不能用于选择
3 公用接口
3.1 公用接口独立于域,但cilent代码的行为与运行时处于操作状态的域的特定于域的行为是相匹配
3.2 ConnectionFactory
3.2.1 可以从JNDI检索的受管理对象
3.2.2 建立了到提供者的连接
3.2.3 createConnection()
3.3 Connection
3.3.1 createSession(boolean, int):返回一个 Session 对象。boolean 参数指出 Session 是否被处理, int 则指出确认模式
3.3.2 start():激活提供者发送消息
3.3.3 stop():临时停止消息的发送,可以用 start() 重新开始发送
3.3.4 close():关闭到提供者的连接,并释放以它的名义占用的所有资源
3.4 Session
3.4.1 用来发送和接收消息的单线程的上下文
3.4.2 createProducer(Destination):返回一个 MessageProducer 对象,向指定的 Destination 发送消息
3.4.3 createConsumer(Destination):返回一个 MessageConsumer 对象来接收来自指定 Destination 的消息
3.4.4 commit(): 提交当前事务的所有使用的或者产生的消息
3.4.5 rollback():
3.4.6 create<MessageType>Message(...):一组返回 <MessageType>Message 的方法
3.5 Destination
3.5.1 封装消息的目的地。它是一个从 JNDI 检索的受管理对象
3.6 MessageProducer
3.6.1 send(Message):发送指示的 Message
3.6.2 setDeliveryMode(int): 设置后续消息的发送模式
3.6.3 setPriority(int):后续发送消息的优先级
3.6.4 setTimeToLive(long):后续发送消息失效前的持续时间,以毫秒计
3.7 MessageConsumer
3.7.1 receive():返回下一发到达的消息,该方法在消息可用之前会受到阻塞
3.7.2 receive(long):接收在 long 毫秒内到达的下一个消息,如果在时间限制内没有消息到达,则该方法返回 null
3.7.3 receiveNoWait:如果有一个消息立即可用,则接收下一个消息,如果没有消息可用,则该方法返回 null
3.7.4 setMessageListener(MessageListener):
3.8 MessageListener
3.8.1 有一个单一方法——onMessage(Message)——的接口,它提供了消息的异步接收和处理
4 PTP
4.1 QueueConnectionFactory
4.1.1 createQueueConnection()
4.2 QueueConnection
4.2.1 createQueueSession(boolean, int)
4.2.2 start()
4.2.3 stop()
4.2.4 close()
4.3 QueueSession
4.3.1 createSender(Queue):返回 QueueSender来向指定的 Queue 发送消息
4.3.2 createReceiver(Queue):返回 QueueReceiver 对象来接收来自指定的 Queue 的消息
4.3.3 createBrowser(Queue):返回一个 QueueBrowser 对象来浏览指定 Queue 上的消息
4.3.4 commit()
4.3.5 rollback()
4.3.6 create<MessageType>Message(...)
4.4 Queue
4.4.1 封装了点对点目的地
4.4.2 是一个从 JNDI 中检索的受管理对象
4.5 QueueSender
4.5.1 send(Message)
4.5.2 setDeliveryMode(int)
4.5.3 setPriority(int)
4.5.4 setTimeToLive(long)
4.6 QueueReceiver
4.6.1 receive()
4.6.2 receive(long)
4.6.3 receiveNoWait
4.6.4 setMessageListener(MessageListener)
4.6.5 接收消息时,在接收消息后从队列中删除她们
4.7 QueueBrowser
4.7.1 可以查看队列中的消息而不删除它们
4.7.2 getEnumeration():返回一个可以用来扫描队列中消息的java.util.Enumeration
5 Pub/sub
5.1 TopicConnectionFactory
5.1.1 createTopicConnection()
5.2 TopicConnection
5.2.1 createTopicSession(boolean, int)
5.2.2 start()
5.2.3 stop()
5.2.4 close()
5.3 TopicSession
5.3.1 createPublisher(Topic):返回 TopicPublisher 对象来向指定的 Topic 发送消息
5.3.2 createSubscriber(Topic):返回 TopicSubscriber 对象来接收指定 Topic 中的消息,订阅只持续到对象的生存周期,只在它对象处于活动状态时才接收消息
5.3.3 createDurableSubscriber(Topic, String):String 给出订阅者的名字。如果对象没有处于活动状态,则通过 JMS 保留 持久的 订阅者的消息,并将它发送给以后用相同名称创建的订阅者对象
5.3.4 unsubscribe(String):结束名为 String 的订阅者的订阅
5.3.5 commit()
5.3.6 rollback()
5.3.7 create<MessageType>Message(...)
5.4 Topic
5.4.1 封装了一个 pub/sub 目的地
5.5 TopicPublisher
5.5.1 publish(Message)
5.5.2 setDeliveryMode(int)
5.5.3 setPriority(int)
5.5.4 setTimeToLive(long)
5.6 TopicSubscriber
5.6.1 receive()
5.6.2 receive(long)
5.6.3 receiveNoWait
5.6.4 setMessageListener(MessageListener)
相关推荐
Classes contained in javax.jms.jar: javax.transaction.xa.XAResource.class javax.jms.BytesMessage.class javax.jms.Message.class javax.jms.JMSException.class javax.jms.Destination.class javax.jms....
**JMS583芯片详解** JMS583是一款由JMicron科技公司设计的高性能USB 3.1 Gen 2至PCIe Gen3x2桥接芯片,旨在为存储设备提供高速数据传输能力。这款芯片是针对现代数据密集型应用而优化的,如SSD固态硬盘和外部存储...
`javax.jms.jar` 文件中包含了如`javax.jms.Queue`, `javax.jms.Topic`, `javax.jms.MessageProducer`, `javax.jms.MessageConsumer`, `javax.jms.ConnectionFactory`等关键接口,以及其他辅助类和异常类,开发者...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用集成的API,它定义了一组标准接口,允许应用程序创建、发送、接收和读取消息。`javax.jms`包是JMS规范的核心部分,包含了各种与消息传递...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的标准接口。它提供了一种可靠的消息传递机制,允许应用程序创建、发送、接收和读取消息。`jms-1.1.jar` 是一个包含了JMS 1.1...
**JMS583 USB转PCIE桥接芯片方案** JMS583是一款由JMicron科技公司设计的高效能USB到PCI Express (PCIe)桥接芯片,旨在为电子设备提供一种灵活的方式来实现高速数据传输。这款芯片能够将USB接口转换成PCIe接口,以...
《JMS 1.1 API详解与应用实践》 Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用间异步通信的一种标准接口。JMS 1.1是其一个重要的版本,它为分布式系统中的应用程序提供了一种可靠的...
javax.jms.BytesMessage.class javax.jms.Connection.class javax.jms.ConnectionConsumer.class javax.jms.ConnectionFactory.class javax.jms.ConnectionMetaData.class javax.jms.DeliveryMode.class javax.jms....
【JMS583量产工具】是一款专门针对JMS583芯片进行批量生产操作的软件工具,主要用于USB闪存盘的制作与修复。这款工具的全称可能为"JMS583 Mass Production Tool",它允许用户一次性对多个JMS583芯片驱动的USB设备...
标题中的“USB转SATA硬盘盒JMS583量产工具”是指一种专门用于将USB接口转换为SATA接口的硬件设备,其中JMS583是该转换器的主控芯片。这种硬盘盒允许用户将传统的SATA硬盘通过USB接口连接到电脑上,方便数据迁移、...
Java消息服务(Java Message Service,简称JMS)是Java平台中用于企业级应用集成的API,主要用于在分布式环境中传递消息。JMS1.1规范是该API的一个版本,提供了标准接口,使得不同的消息中间件(Message Oriented ...
标题中的“USB3.0移动硬盘盒 JMS578 固件2018最新固件, G-Technology 移动硬盘盒固件 for JMS578”揭示了这个压缩包文件主要关注的是一个特定型号的USB3.0移动硬盘盒,该盒子采用JMS578主控芯片,并且提供了2018年...
### JMS的中文教程(Java的消息驱动)知识点详解 #### 一、JMS简介与重要性 **JMS**(Java Message Service)是一种消息传递中间件的API标准,它定义了一套标准接口,允许应用程序创建、发送、接收和读取消息。JMS的...
文件包含: 13个不同固件 两个固件升级工具 其中一个是量产工具可以修改休眠时间和盒子信息 TRIM检查工具 有几个固件版本为全网首发,别人没有的资源 固件列表: JMS578_00.01.00.05 ...JMS578_254.02.03.09_NoUAS
`javax.jms-1.1.jar` 是一个Java Message Service(JMS)的API库,它属于Java标准版(Java Standard Edition, Java SE)的一部分。JMS是Java平台上的一个规范,用于在分布式环境中进行异步消息传递。这个库主要用于...
WebLogic Server是一款由Oracle公司提供的企业级应用服务器,它支持Java Message Service (JMS) 规范,允许在分布式环境中可靠地发送和接收消息。JMS是Java平台上的标准接口,用于实现应用程序间的异步通信。本文将...
Weblogic JMS 依赖jar包是Oracle公司的中间件产品Weblogic Server中用于实现Java Message Service (JMS) 功能的关键组件。JMS是一种标准API,它允许应用程序在分布式环境中发送和接收消息,提供了异步通信的能力。在...
标题“JMS577主控通刷固件”指的是针对希捷移动硬盘中采用JMS577主控芯片的固件更新解决方案。在IT领域,固件是存储在硬件设备上的软件部分,它控制设备的操作并提供与主机系统的交互。JMS577是一种常见的硬盘主控...
JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS