JMS
来源:互联网 发布:plsql导出sql乱码 编辑:程序博客网 时间:2024/06/07 10:10
JMS是java消息服务(java message service)应用程序接口,是一个java平台中关于面向消息中间件(MOM)的API,用于在两个程序之间,或者分布式系统中发送消息,进行异步通信,java消息服务是一个与具体平台无关的API。
绝大多MOM提供商都对JMS提供支持。
JMS是一种与厂商无关的API,用来访问消息收发系统消息,类似JDBC,JDBC是可以用来访问许多不同关系数据库的API,而JMS则提供同样与厂商无关的访问方法,以访问消息收发服务。
JMS有两种模型:点对点或队列模型 发布者/订阅者模型
1.点对点或队列模型:一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息,这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列,这种模式概括为:
只有一个消费者将会获得消息(一旦被消费,消息不在消息队列中了)。生产者不需要在接受者消费该消息期间处于运行状态,接收者也不需要在消息发送时,处于运行状态。二者没有依赖性,每一个成功处理的消息都由接受者签收。即接收者在成功接收消息之后需向队列应答。若需要发送的每个消息都能被成功处理,那么就要使用P2P。
2、发布者/订阅者模型
发布者/订阅者模型支持向一个特定的消息主题发布消息。0个多个订阅者可能对接收来自特定消息主题的消息感兴趣,这种模型下,发布者和订阅者彼此并不知道对方,这种模式好比是匿名公告板,这种模式概括为:
多个消费者可以获得消息
在发布者和订阅者之间存在时间依赖性,发布者需要建立一个订阅,以便客户能够订阅,订阅者必须保持持续的活动状态以接收消息,除非订阅者建立了持久的订阅(JMS允许订阅者创建一个可持久化的订阅,即使订阅者没有被激活,也能接收到发布者的消息)。在那种情况下,在订阅者未连接时发布的消息将在订阅者重新连接时重新发布。
当需要发送的消息可以不被做任何处理,或者被一个消费者处理,或者被多个消费者处理的话,可以采用这种模型。
3.消息的组合
(1)头
每条JMS消息都必须具有消息头,头字段包含用于路由和识别消息的值,可以通过多种方式来设置消息头的值。
a、由JMS提供者在生成或者传送消息的过程中自动设置
b、由生产者客户机通过在创建消息生产者时指定的设置进行设置
c、由生产者客户机逐一对各消息进行设置
(2)属性
消息包含称作属性的可选头字段,是以属性名和属性值成对形式,属性可以视为消息头的扩展,其中可以包含:创建数据的进程,数据的创建时间以及每条数据的结构,JMS提供者也可以添加影响消息处理的属性,例如是否应压缩消息或者如何在消息声明周期结束时废弃消息。
(3)主题
包含要发送给接收应用程序的内容,每个消息接口特定于它所支持的内容类型,JMS为不同类型的内容提供了他们各自的消息类型,但是所有消息都派生自Message接口。
StreamMessage 一种主体中包含Java基元值流的消息。其填充和读取均按顺序进行。
MapMessage 一种主体中包含一组键--值对的消息。没有定义条目顺序。
TextMessage 一种主体中包含Java字符串的消息(例如,XML消息)。
ObjectMessage 一种主体中包含序列化Java对象的消息。
BytesMessage 一种主体中包含连续字节流的消息。
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- JMS
- jms
- JMS
- JMS
- JMS
- JMS
- JMS
- Java GUI之初见JProgressBar
- Android单元测试
- CodeForces 341DIahub and Xors(二维树状数组)
- oracle数据库常用SQL
- 开发需求修改梳理
- JMS
- 整型转字符型
- 微信小程序
- 小C语言--词法分析程序
- RN混合开发坑1-版本问题
- HTML 为select自定义出现滚动条的条数
- 100天土鸡饲养计划(58)
- IndexDB/Cookie/url/Session/post/local Storage/
- 用WCF建立一个聊天室