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系统,解压进入主目录,运行activemq.bat就行了,如果控制台出现java.lang.UnsupportedClassVersionError: Unsupported major.minor version 51.0 这样的错误,就是jdk版本的问题,官网提供的jar使用Build-Jdk: 1.7.0_80编译,你的jdk低了,简单的办法安装jdk1.7,设置主目录环境变量

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

时间: 2024-12-27 20:03:08

JMS笔记(一)的相关文章

程序员开发书籍汇总

文件类型 文件名称 更新时间 pdf 浅谈ACEGI配制 .pdf 2015/10/9 pdf AJAX In Action.pdf 2015/10/9 pdf Ajax.pdf 2015/10/9 txt AjaxHttpRequest.txt 2015/10/9 pdf AJAXInAction.pdf 2015/10/9 pdf Ajax经典案例开发大全.pdf 2015/10/9 pdf AJAX开发简略(含续一).pdf 2015/10/9 pdf AJAX开发简略.pdf 2015/

ActiveMQ学习笔记(五)——使用Spring JMS收发消息

ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次收发消息都要写许多重复的代码,Spring 为我们提供了更为方便的方式,这就是Spring JMS.我们通过一个例子展开讲述.包括队列.主题消息的收发相关的Spring配置.代码.测试. 本例中,消息的收发都写在了一个工程里. 1.使用maven管理依赖包 <dependencies> <depend

ActiveMQ学习笔记(六)——JMS消息类型

1.前言 ActiveMQ学习笔记(四)--通过ActiveMQ收发消息http://my.oschina.net/xiaoxishan/blog/380446 和ActiveMQ学习笔记(五)--使用Spring JMS收发消息http://my.oschina.net/xiaoxishan/blog/381209   中,发送和接受的消息类型都是TextMessage,即文本消息(如下面的代码所示).显然消息类型只有文本类型是不能满足要求的. //发送文本消息  session.create

ActiveMQ学习笔记(一)--认识消息JMS

1.面向消息的中间件 1.1 什么是MOM 面向消息的中间件,Message Oriented Middleware,简称MOM,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.一个MOM系统,通常会包括客户端(Client).消息(Message)和MOM,客户端是发送或者接收消息的应用程序,消息封装了要传递的内容,MOM可以存储和转发消息. 1.2 MOM的好处 降低系统间的通信复杂度.有了MOM,系统间通信可以跨编程语言.不用考虑复杂的网络编程,只需

JMS是一种应用于异步消息传递的标准API

JMS是一种应用于异步消息传递的标准API,作为Java平台的一部分,JMS可以允许不同应用.不同模块之间实现可靠.异步数据通信. 一些概念 JMS provider    An implementation of the JMS interface for a Message Oriented Middleware (MOM). Providers are implemented as either a Java JMS implementation or an adapter to a no

jmeter 建立一个JMS主题测试计划

创建两个线程组和组 每一个到10迭代. 总消息线程(6)x(1消息) (重复10次)= 60消息. 建立测试计划,您将使用 以下元素: 线程组 , JMS的出版商 , JMS用户 , 图结果 . 一般笔记JMS:目前有两个JMS采样. 一个使用JMS主题 和另一种使用队列. 主题通常被称为发布/订阅消息传递的消息. 主题消息通常是用在这种情况下,消息由生产者和出版 被多个订阅者. 队列消息通常是用于交易 发送方期待响应. 消息传递系统有很大的不同 正常的HTTP请求. 在HTTP中,单个用户发送

【读书笔记】性能测试基础

读书笔记:<零成本实现Web性能测试>第1~3章随手记 第1章 性能测试基础 性能测试的基本流程: 1.明确性能测试需求 2.制定性能测试方案 性能测试方案应该详尽地描述如何进行性能测试,其中应该至少包括: 1)测试背景 2)测试目的 3)测试范围           4)测试进入条件           5)测试退出条件 6)测试指标要求 7)测试策略 8)测试时机 9)测试风险 10)测试资源      3.编写性能测试案例 4.执行性能测试案例 5.分析性能测试结果 6.生成性能测试报告

Intellij IDEA 创建消息驱动Bean - 接收JMS消息

除了同步方式的调用之外,有时还需要异步调用,用来处理不需要即时处理的信息,例如短信.邮件等,这需要使用EJB中的独特组件——消息驱动Bean(Message-Driven Bean,MDB),它提供了Java消息服务JMS(Java Messaging Service)的处理能力,由消息驱动Bean来处理JMS消息.JMS的消息由客户端程序产生,并被发布到服务器的消息队列,消息驱动Bean随之检索消息并执行其内容.这种事件或者数据的通信就称为异步形式,客户端或者服务端Bean都无须依赖对方的直接

04.ActiveMQ与Spring JMS整合

SpringJMS使用参考:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html 1.SpringJMS核心接口介绍 1.JmsTemplate JmsTemplate: 是Spring自身提供,只需向Spring容器内注册这个类即可,就可以使用JmsTemplate类对象方便的操作JMS,下面介绍他常用的方法. 注意:JmsTemplate类是线程安全的,可以在整个应用范围使用.但并