消息类型

JMS提供了多种消息类型以满足不同场景下的需求,这篇笔记我们介绍JMS常见的消息类型及其使用方式。

Message接口

JMS中,所有的消息类型接口都继承自Message接口,该接口定义了一些重要的字段供我们获取和设置,下面是一些常用的属性。

属性 说明
消息属性 Properties 用于设置和获取消息的属性。这些属性可以是字符串、布尔值、整数等类型,用于消息的元数据信息。
消息ID JMSMessageID 消息ID,唯一标识消息。
消息时间戳 JMSTimestamp 消息的时间戳。
消息类型 JMSType 消息类型,由开发者定义。
消息体 Body JMS消息的具体数据。
消息优先级 Priority 消息优先级,共有0-9十个级别,高优先级的消息一定比低优先级的消息先到达,默认是4级。
过期时间 JMSExpiration 当消息在过期时间后还有被发送到目的地则该消息被清除。
消息目标 JMSDestination 消息的目的地,指Queue或Topic。

文本消息

文本消息是一种最简单的消息类型,它可以包含任意文本数据,常用于传输简单的文本信息。创建文本消息非常简单,我们使用context.createTextMessage()方法并传入文本即可。

TextMessage textMessage = context.createTextMessage("Hello, JMS!");

Map消息

Map消息包含一组键值对,其中值可以是多种基本数据类型。Map消息常用于传输结构化数据,比如配置信息、属性集等。下面是一个创建Map消息的例子。

MapMessage mapMessage = context.createMapMessage();
mapMessage.setLong("studentId", 18009L);
mapMessage.setString("studentName", "Tom");

二进制消息

二进制消息包含一组字节数据,可以用于传输任意类型的数据。它适用于需要传输二进制数据的场景,比如文件传输、图像传输等。

byte[] data = {0x01, 0x02, 0x03};
BytesMessage bytesMessage = context.createBytesMessage();
bytesMessage.writeBytes(data);

对象消息

对象消息可以传输Java对象,不过注意该对象必须是可序列化的,即实现了Serializable接口。

User user = User.builder()
        .username("Jerry")
        .age(18)
        .build();
ObjectMessage objectMessage = context.createObjectMessage();
objectMessage.setObject(user);
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap