- RocketMQ技术内幕:RocketMQ架构设计与实现原理(第2版)
- 丁威 张登 周继锋
- 273字
- 2022-08-25 16:04:34
3.2 认识RocketMQ消息
RocketMQ消息封装类是org.apache.rocketmq.common.message.Message。RocketMQ消息类设计如图3-4所示。
图3-4 RocketMQ消息类图
消息的基础属性主要包括消息所属主题(topic)、消息标记(RocketMQ不做处理)、扩展属性、消息体。RocketMQ定义的消息Flag如图3-5所示,消息全属性构造函数如代码清单3-1所示。
图3-5 RocketMQ消息Flag
代码清单3-1 Message全属性构造函数
public Message(String topic, String tags, String keys, int flag, byte[] body, boolean waitStoreMsgOK) { this.topic = topic; this.flag = flag; this.body = body; if (tags != null && tags.length() > 0) this.setTags(tags); if (keys != null && keys.length() > 0) this.setKeys(keys); this.setWaitStoreMsgOK(waitStoreMsgOK); } public void setTags(String tags) { this.putProperty(MessageConst.PROPERTY_TAGS, tags); } public void setKeys(Collection<String> keys) { StringBuffer sb = new StringBuffer(); for (String k : keys) { sb.append(k); sb.append(MessageConst.KEY_SEPARATOR); } this.setKeys(sb.toString().trim()); }
消息扩展属性如下。
- tags:消息tag,用于消息过滤。
- keys:消息索引键,用空格隔开,RocketMQ可以根据这些key(键)快速检索消息。
- waitStoreMsgOK:消息发送时是否等消息存储完成后再返回。