activemq - jms规范

什么是 JMS?

‌ActiveMQ JMS 是 Java Message Service 的缩写。‌

JMS 是 Java 平台上的一个标准 API,用于实现应用程序之间的消息传递和通信。

它是 Java EE 规范的一部分,旨在提供一个与厂商无关的 API,以便访问不同的消息中间件系统‌。

JMS 的组成结构和特点

很多内容之前已经提到,本文仅做一些补充,只介绍几个核心

|-------------------|-----------------------------------------------------------|
| JMS Broker | 消息服务器,作为server提供消息核心服务 |
| JMS Provider | 消息生产者,创建和发送消息的客户端应用 |
| JMS Consumer | 消息消费者,接收和处理消息的客户端应用 |
| JMS Message | 消息头、消息属性、消息体 |

消息头和消息属性

可选配置,详见 javax.jms.Message。

消息头和消息属性,并不是必填项,大都是生产者与消费者之间的一种约定;

类似于 http 中的 content-type,消费者读到这个属性,就知道该如何去解析消息了;

消息头的作用亦是如此,除了消息本身,有时候还要附加一些消息描述。

message.setObjectProperty(name, org);

用途举例:

‌路由和过滤‌:通过消息头中的信息,ActiveMQ 可以正确路由消息到目标消费者,同时可以根据需要进行消息过滤,确保只有符合条件的消息被处理。
‌优先级处理‌:根据消息头的优先级信息,ActiveMQ 可以优先处理高优先级的消息,确保关键业务能够及时响应。
‌增强消息的可追踪性‌:通过消息头中的发送者和时间戳等信息,可以更好地追踪消息的发送和接收情况,有助于问题排查和系统优化‌

一些对消息有影响的配置

// 设置持久化模式:队列重启的时候,是否需要恢复数据?
message.setJMSDeliveryMode(DeliveryMode.NON_PERSISTENT);
// 消息到期之前,如果消息还未发送,则直接清除,0 表示不清除
message.setJMSExpiration(1000);
// 消息优先级,从 0-9 十个级别,0-4是普通消息,5-9是加急消息。默认为 4
message.setJMSPriority(10);
// 唯一标识每个消息的标识。MQ 会给我们默认生成一个,我们也可以自己指定。
message.setJMSMessageID("test");

消息体

  • 简单文本(TextMessage),即一个字符串对象
  • 可序列化的对象 (ObjectMessage),即一个序列化的 Java对象
  • 属性集合 (MapMessage),即一套名称-值对
  • 字节流 (BytesMessage),即一个未解释字节的数据流
  • 原始值流 (StreamMessage),即Java原始值的数据流

posted on 2024-11-04 09:10  疯狂的妞妞  阅读(8)  评论(0编辑  收藏  举报

导航