JMS笔记(一)

1.jms概念

Java Message Service为 Java程序提供一种访问企业消息系统的方法,JMS应用由JMS生产者、JMS Provider、JMS消费者构成

1.1. 一条Message 的组成

(1) 头(head)

每条JMS 消息都必须具有消息头。头字段包含用于路由和识别消息的值。可以通过多种方式来设置消息头的值:

a. 由JMS 提供者在生成或传送消息的过程中自动设置

b. 由生产者客户机通过在创建消息生产者时指定的设置进行设置

c. 由生产者客户机逐一对各条消息进行设置

 

(2) 属性(property)

消息可以包含称作属性的可选头字段。他们是以属性名和属性值对的形式制定的。可以将属性是为消息头得扩展,其中可以包括如下信息:创建数据的进程、数据的创建时间以及每条数据的结构。JMS提供者也可以添加影响消息处理的属性,如是否应压缩消息或如何在消息生命周期结束时废弃消息。

 

(3) 主体(body)

包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。JMS为不同类型的内容提供了他们各自的消息类型,但是所有消息都派生自Message接口。

StreamMessage   一种主体中包含Java基元值流的消息。其填充和读取均按顺序进行。

MapMessage     一种主体中包含一组键--值对的消息。没有定义条目顺序。

TextMessage       一种主体中包含Java字符串的消息(例如,XML消息)。

ObjectMessage    一种主体中包含序列化Java对象的消息。

BytesMessage     一种主体中包含连续字节流的消息。

1.2. 消息传递模型

 JMS支持两种消息传递模型:点对点(point-to-point,简称P2P)和发布/订阅(publish/subscribe,简称pub/sub) 

P2P特点:

(1)每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)

(2)发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列

(3)接收者在成功接收消息之后需向队列应答成功

Pub/Sub的特点

(1)每个消息可以有多个消费者

(2)发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。

(3)为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。

2. 安装ActiveMQ

ibm的websphere mq提供了90天的试用版,虽然项目中使用的是websphere mq,但我没有仔细研究过,本机玩玩还是选择了ActiveMQ

http://activemq.apache.org/activemq-5130-release.html 下载5.13.0,我用的windows系统,解压进入主目录bin下,运行activemq.bat就行了,如果控制台出现java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0 这样的错误,就是jdk版本的问题,官网提供的jar使用Build-Jdk: 1.7.0_80编译,你的jdk低了,简单的办法安装jdk1.7,设置主目录环境变量

 

后面会介绍activemq的使用。。。

 

 

posted @ 2016-01-08 15:43  未来的那啥  阅读(211)  评论(0编辑  收藏  举报