MQ消息中RFH头是什么?JMS写入时添加的RFH属性有何作用?
详解MQ的RFH头及其JMS相关属性意义
嘿,刚好对这块比较熟,我来给你拆解清楚这些MQ里的RFH头相关问题,当初我刚接触的时候也绕了好一阵子呢~
什么是RFH头?
RFH是Rules and Formatting Header(规则与格式头)的缩写,是IBM MQ体系里专门用来携带消息元数据的特殊消息头。它不属于业务数据范畴,主要负责在MQ服务端、不同客户端之间传递控制类信息,是MQ实现跨协议、跨平台消息交互的关键组件之一。
RFH头的核心用途
- 传递消息元数据:比如消息的编码格式、处理规则、属性映射关系等,让接收方明确该如何解析和处理消息体
- 协议/API适配:当JMS应用和原生MQ应用(比如用MQI接口开发的程序)通信时,RFH会把JMS的标准属性转换成MQ能识别的格式,反之亦然,实现不同技术栈之间的消息互通
- 支持扩展控制:除了标准字段,还可以自定义额外的属性字段,满足特定业务场景的个性化控制需求
你提到的JMS相关RFH属性详解
当你用JMS向MQ队列写消息时,这些属性会被自动封装到RFH头里,每个属性的意义如下:
JmsDeliveryMode
这是消息的投递可靠性模式,分为两种:
- 持久化(PERSISTENT):MQ会把消息写入磁盘存储,就算MQ服务重启,消息也不会丢失,适合订单、交易这类核心业务数据
- 非持久化(NON_PERSISTENT):消息仅存储在内存中,MQ重启后会丢失,适合日志、临时通知这类对可靠性要求不高的场景
JMS Destination
标识消息的目标地址,也就是你发送消息的队列(Queue)或主题(Topic)的名称。接收方可以通过这个属性确认消息的来源目标,在消息转发、路由场景中特别有用。
JMS Timestamp
这是JMS客户端发送消息时生成的时间戳(精确到毫秒),主要用于消息的时序校验、延迟处理触发,或者作为日志审计的时间依据。
Mcd.msd
全称是Message Content Descriptor - Message Style Definition,用来指定消息体的格式类型,告诉接收方该用什么方式解析消息内容,常见取值包括:
jms_text:消息体是文本格式(比如String类型)jms_bytes:消息体是字节数组格式mqcd:消息体是原生MQ的消息格式
简单来说,这个属性就是给接收方的“解析说明书”。
内容的提问来源于stack exchange,提问作者Vishal
相关产品推荐
相关产品推荐

