认识 RocketMQ 消息
RocketMQ 消息封装类是 org.apache.rocketmq.common.message.Message。RocketMQ 消息类设计如图3-4 所示。

Figure 1. 图3-4 RocketMQ消息类图
消息的基础属性主要包括消息所属主题(topic)、消息标记(RocketMQ不做处理)、扩展属性、消息体。RocketMQ 定义的消息 Flag 如图3-5 所示,消息全属性构造函数如代码清单3-1 所示。
代码清单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:消息发送时是否等消息存储完成后再返回。