学习笔记——JMS消息

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);


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值