学习笔记——JMS消息

原创 2012年03月21日 23:56:23

JMS消息机制使用Message接口处理消息。

消息类型:

StreamMessage:从流中读取的消息;

MapMessage:由多个“key-value”对组成的内容。

TextMessage:普通字符串消息。

ObjectMessage:该消息包含序列化的对象。

BytesMessage:该消息内容是原始的字节流。

WebLogic还对TextMessage进行了扩展,扩展出一种新的类型XMLMessage。

 

JMS消息结构:

标准的消息头:可扩展的消息属性:消息主体内容

 

消息头是通过Message接口的setter和getter方法来设置、获取,也可有MessageProduce接口的方法操作。

消息生产者可通过调用Message对象的setXxxProperty(java.lang.String name, xxx value)方法来为JMS消息增加属性,

消息消费者可调用Message对象的getXxxProperty(java.lang.String name)方法来读取JMS消息属性。

JMS标准消息头
消息头名称 设置者 说明
JMSCorrelationID 应用程序 用于指定相关的ID,可设置为任意的字符串。使用场景:1、将请求消息中的JMSMessageID的值设置为效应消息中JMSCorrelationID的值,让其关联起来。2、将若干个相关联的消息连接在一起
JMSDeliveryMode 生产者 指定消息的传递模式。用于标识消息是否为持久性消息
JMSDestination 生产者 消息目的地的名称
JMSExpiration 生产者 指定消息什么时候过期。默认0,永不过期。
JMSMessageID 生产者 消息的唯一标识符,通常以“ID:”开头,其他字符应由服务器生成
JMSPriority 生产者 消息的优先级别,支持0~9个优先级。默认是4
JMSRedelivered 应用服务器 消息是否为重新传递的消息的旗标
JMSReplyTo 应用程序 消息的回复地址
JMSTimestamp 生产者 用于long型的整数值记录消息的发送时间
JMSType 应用程序 开发者的自定义消息类型

 

 

消息的选择器:

JMS消息选择器的表达式是一个SQL-92的字符串表达式,该表达式由JMS消息头、消息属性和SQL-92比较运算符、逻辑运算符组成,该表达式的返回值必须是一个boolean值。

每个JMS消息消费者都可以指定一个消息选择器。

Session接口提供如下方法:

MessageConsumer createConsumer(Destiantion destination, String messageSelector)

MessageConsumer createConsumer(Destination destination, string messageSelector, boolean NoLocal)

e.g.

MessageConsumer receiver = session.createConsumer(destination, "JMSPriority > 4");


消息的临时目的:

JMS消息的临时目的使用场景:JMS消息生产者向JMS服务器发送消息时,将JMSReplyTo消息头设为临时目的,JMS消息消费者收到消息后,向该临时目的回送一个响应。

Session接口提供了如下方法创建临时目的:

TemporaryQueue createTemporaryQueue()

TemporaryTopic createTemporaryTopic()

使用方法:

生产者

TemporaryQueue tempDestination = session.createTemporaryQueue();
message.setJMSReplyTo(tempDestination);
...
tempDestination.delete();


消费者

Destination replyTo = message.getJMSReplyTo();
MessageProducer sender = session.createProducer(replyTo);
TextMessage replyMessage = session.createTextMessage();
replyMessage.setText("Hello!");
sender.send(replyMessage);


 

jms中消息接收的实现原理

消息驱动Bean  驱动Bean (MDB) 提供了一个实现异步通信比直接使用Java消息服务(JMS)更容易地方法。创建MDB接收异步JMS消息。容器处理为JMS队列和主题所要求加载处理的大部分工作...
  • asdfsadfasdfsa
  • asdfsadfasdfsa
  • 2017年01月05日 10:48
  • 935

1.JMS消息确认机制

1.JMS消息确认机制 JMS消息只有在被确认之后,才认为已经被成功地消费了。消息的成功消费通常包含三个阶段:客户接收消息、客户处理消息和消息被确认。在事务性会话中,当一个事务被提交的时候,确认...
  • legend_x
  • legend_x
  • 2014年02月19日 15:10
  • 1009

消息队列技术终结者(二)—JMS中队列(Queue)和主题(Topic)的区别

消息队列技术终结者(二)—JMS中队列(Queue)和主题(Topic)的区别
  • wangshuxuncom
  • wangshuxuncom
  • 2014年12月27日 21:02
  • 4741

JMS消息发送和接收实例 - 点对点模式

JMS消息发送和接收实例 - 点对点模式 分类: Java EE学习 JMS学习 2012-10-18 09:22 311人阅读 评论(0) 收藏 举报 发送消息 ...
  • chenguibing123
  • chenguibing123
  • 2014年05月19日 15:10
  • 1052

JMS消息服务器(一)——基础知识

JMS消息服务器(一)——基础知识1、概述 异构集成(heterogeneous integration)是消息传送机制在其中起关键作用的一个领域。无论它的成因是合并、并购、业务需求,或者仅仅是技...
  • caidaoqq
  • caidaoqq
  • 2015年05月10日 10:45
  • 909

JMS消息传输机制

JMS消息传送模型:   消息传送机制, 是基于拉取(pull)或者轮询(polling)的方式.    JMS具备两种"消息传送模型": P2P和Pub/sub.  (1) ...
  • lipc_
  • lipc_
  • 2016年10月04日 13:45
  • 851

【Java.JMS】JMS中的消息的基本结构

...
  • robinjwong
  • robinjwong
  • 2014年08月25日 16:05
  • 1100

JMS(java消息服务)学习笔记

JMS(java消息服务)是java平台关于面向消息中间件的api接口,用于在应用程序和分布式系统中发送消息,进行异步通信。JMS提供了一套类似JDBC的技术规范,服务的实现由具体的实现提供商提供。 ...
  • e5945
  • e5945
  • 2013年02月20日 00:11
  • 10632

理解JMS规范中消息的传输模式和消息持久化

JMS规范定义了2种消息传输模式:持久传送模式和非持久传输模式。发送者可以通过如下类似的代码进行设置 TopicPublisher publihser = session.createPublishe...
  • aitangyong
  • aitangyong
  • 2014年05月18日 13:17
  • 3346

spring消息之使用jms发送和接收消息

自学这个地方,遇到了许多莫名其妙的错误,也是对自己搞了一整天的一个总结,免得后面又忘记。 (1)首先,发送消息的话应该有消息代理这里我们在spring中搭建消息代理使用ActiveMQ。 在htt...
  • arrogant_boom
  • arrogant_boom
  • 2016年11月29日 11:10
  • 952
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习笔记——JMS消息
举报原因:
原因补充:

(最多只允许输入30个字)