ActiveMQ文档Word文档格式.docx
- 文档编号:15735841
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:29
- 大小:37.65KB
ActiveMQ文档Word文档格式.docx
《ActiveMQ文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《ActiveMQ文档Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
这种模式下,发送和接收是异步的,发送者无需等待;
二者的生命周期未必相同:
发送消息的时候接收者不一定运行,接收消息的时候发送者
也不一定运行;
一对多通信:
对于一个消息可以有多个接收者。
已有的MOM系统包括IBM的MQSeries、Microsoft的MSMQ和BEA的Mes
sageQ等。
由于没有一个通用的标准,这些系统很难实现互操作和无缝连接。
Java
MessageService(JMS)是SUN提出的旨在统一各种MOM系统接口的规范,
它包含点对点(PointtoPoint,PTP)和发布/订阅(Publish/Subscribe,p
ub/sub)两种消息模型,提供可靠消息传输、事务和消息过滤等机制。
2.JMS概述
2.1JMS规范
JAVA消息服务(JMS)定义了Java中访问消息中间件的接口。
JMS只是接口,
并没有给予实现,实现JMS接口的消息中间件称为JMSProvider,例如ActiveMQ。
2.2术语
JMSProvider:
实现JMS接口的消息中间件;
PTP:
PointtoPoint,即点对点的消息模型;
Pub/Sub:
Publish/Subscribe,即发布/订阅的消息模型;
Queue:
队列目标;
Topic:
主题目标;
ConnectionFactory:
连接工厂,JMS用它创建连接;
Connection:
JMS客户端到JMSProvider的连接;
Destination:
消息的目的地;
Session:
会话,一个发送或接收消息的线程;
MessageProducer:
由Session对象创建的用来发送消息的对象;
MessageConsumer:
由Session对象创建的用来接收消息的对象;
Acknowledge:
签收;
Transaction:
事务。
2.3JMS编程模型
在JMS编程模型中,JMS客户端(组件或应用程序)通过JMS消息服务交换消息。
消息生产者将消息发送至消息服务,消息消费者则从消息服务接收这些消息。
这些消息
传送操作是使用一组实现JMS应用编程接口(API)的对象(由JMSProvide提供)来
执行的。
在JMS编程模型中,JMS客户端使用ConnectionFactory对象创建一个连接,向
消息服务发送消息以及从消息服务接收消息均是通过此连接来进行。
Connection是客
户端与消息服务的活动连接。
创建连接时,将分配通信资源以及验证客户端。
这是一个
相当重要的对象,大多数客户端均使用一个连接来进行所有的消息传送。
连接用于创建会话。
Session是一个用于生成和使用消息的单线程上下文。
它用于
创建发送的生产者和接收消息的消费者,并为所发送的消息定义发送顺序。
会话通过大
量确认选项或通过事务来支持可靠传送。
客户端使用MessageProducer向指定的物理目标(在API中表示为目标身份对象)
发送消息。
生产者可指定一个默认传送模式(持久性消息与非持久性消息)、优先级和
有效期值,以控制生产者向物理目标发送的所有消息。
同样,客户端使用MessageConsumer对象从指定的物理目标(在API中表示为目
标对象)接收消息。
消费者可使用消息选择器,借助它,消息服务可以只向消费者发送
与选择标准匹配的那些消息。
消费者可以支持同步或异步消息接收。
异步使用可通过向消费者注册MessageList
ener来实现。
当会话线程调用MessageListener对象的onMessage方法时,客户端
将使用消息。
2.4JMS编程域
JMS支持两种截然不同的消息传送模型:
PTP(即点对点模型)和Pub/Sub(即发布
/订阅模型),分别称作:
PTPDomain和Pub/SubDomain。
PTP(使用Queue即队列目标)消息从一个生产者传送至一个消费者。
在此传
送模型中,目标是一个队列。
消息首先被传送至队列目标,然后根据队列传送策略,从
该队列将消息传送至向此队列进行注册的某一个消费者,一次只传送一条消息。
可以向
队列目标发送消息的生产者的数量没有限制,但每条消息只能发送至、并由一个消费者
成功使用。
如果没有已经向队列目标注册的消费者,队列将保留它收到的消息,并在某
个消费者向该队列进行注册时将消息传送给该消费者。
Pub/Sub(使用Topic即主题目标)消息从一个生产者传送至任意数量的消费
者。
在此传送模型中,目标是一个主题。
消息首先被传送至主题目标,然后传送至所有
已订阅此主题的活动消费者。
可以向主题目标发送消息的生产者的数量没有限制,并且
每个消息可以发送至任意数量的订阅消费者。
主题目标也支持持久订阅的概念。
持久订
阅表示消费者已向主题目标进行注册,但在消息传送时此消费者可以处于非活动状态。
当此消费者再次处于活动状态时,它将接收此信息。
如果没有已经向主题目标注册的消
费者,主题不保留其接收到的消息,除非有非活动消费者注册了持久订阅。
这两种消息传送模型使用表示不同编程域的API对象(其语义稍有不同)进行处
理,如下所示:
基本类型(统一
域)
PTP域Pub/Sub域
ConnectionFactory
QueueConnectionFactoryTopicConnectionFactory
ConnectionQueueConnectionTopicConnection
SessionQueueSessionTopicPublisher
Destination(Queue或Topic)
QueueTopic
MessageProducerQueueSender
MessageConsumerQueueReceiver,QueueBrowser
TopicSubscriber
使用图表第一列中列出的统一域对象编写点对点和发布/订阅消息传送。
这是首选
方法(JMS1.1规范)。
然而,为了符合早期的JMS1.02b规范,可以使用PTP域对象
编写点对点消息传送,使用Pub/Sub域对象编制发布/订阅消息传送。
2.5JMS消息结构
JMS消息由以下几部分组成:
消息头,属性和消息体。
2.5.1消息头(Header)
消息头包含消息的识别信息和路由信息,消息头包含一些标准的属性如:
JMSDesti
nation,JMSMessageID等。
消息头由谁设置
JMSDestinationsend方法
JMSDeliveryModesend方法
JMSExpirationsend方法
JMSPrioritysend方法
JMSMessageIDsend方法
JMSTimestampsend方法
JMSCorrelationID
客户
JMSReplyTo客户
JMSType客户
JMSRedeliveredJMSProvider
2.5.2属性(Properties)
除了消息头中定义好的标准属性外,JMS提供一种机制增加新属性到消息头中,
这种新属性包含以下几种:
1.应用需要用到的属性;
2.消息头中原有的一些可选属性;
3.JMSProvider需要用到的属性。
标准的JMS消息头包含以下属性:
消息头描述
JMSDestination消息发送的目的地
JMSDeliveryMode传送模式,有两种模式:
PERSISTENT和NON_PERSISTENT,PERSISTENT表示该消息一定要被送到目的地,否则会导致应用错误。
NON_PERSISTENT表示偶然丢失该消息是被允许的,这两种模式使开发者可以在消息传送的可靠性和吞吐量之间找到平衡点。
JMSExpiration消息过期时间,等于Destination的send方法中的timeToLive值加上发送时刻的GMT时间值。
如果timeToLive值等于零,则JMSExpiration被设为零,表示该消息永不过期。
如果发送后,在消息过期时间之后消息还没有被发送到目的地,则该消息被清除。
JMSPriority消息优先级,从0-9十个级别,0-4是普通消息,5-9是加急消息。
JMS不要求JMSProvider严格按照这十个优先级发送消息,但必须保证加急消息要先于普通
消息到达。
JMSMessageID唯一识别每个消息的标识,由JMSProvider产生。
JMSTimestamp一个消息被提交给JMSProvider到消息被发出的时间。
用来连接到另外一个消息,典型的应用是在回复消息中连接到原消息。
JMSReplyTo提供本消息回复消息的目的地址
JMSType消息类型的识别符。
JMSRedelivered如果一个客户端收到一个设置了JMSRedelivered属性的消息,则表示可能客户端曾经在早些时候收到过该消息,但并没有签收(acknowledged)。
2.5.3消息体(Body)
JMSAPI定义了5种消息体格式,也叫消息类型,可以使用不同形式发送接收数
据并可以兼容现有的消息格式,下面描述这5种类型:
消息类型消息体
TextMessagejava.lang.String对象,如xml文件内容
MapMessage名/值对的集合,名是String对象,值类型可以是
Java任何基本类型
BytesMessage字节流
StreamMessageJava中的输入输出流
ObjectMessageJava中的可序列化对象
Message没有消息体,只有消息头和属性
2.6PTP模型
PTP(Point-to-Point)模型是基于队列的,生产者发消息到队列,消费者从队列接
收消息,队列的存在使得消息的异步传输成为可能。
和邮件系统中的邮箱一样,队列可
以包含各种消息,JMSProvider提供工具管理队列的创建、删除。
JMSPTP模型定义
了客户端如何向队列发送消息,从队列接收消息,浏览队列中的消息。
下面描述JMSPTP模型中的主要概念和对象:
名称描述
ConnectionFactory客户端用ConnectionFactory创建Connection
对象。
Connection一个到JMSProvider的连接,客户端可以用
Connection创建Session来发送和接收消息。
Session客户端用Session创建MessageProducer和
MessageConsumer对象。
如果在Session关闭时,有
一些消息已
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ActiveMQ 文档