学习笔记——JMS消息

来源:互联网 发布:网络电视能看电视频道 编辑:程序博客网 时间:2024/05/17 00:50

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个优先级。默认是4JMSRedelivered应用服务器消息是否为重新传递的消息的旗标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);


 

原创粉丝点击