简介
本文简单介绍下RocketMQ消息结构,以及发送消息的简单示例,为后续学习RocketMQ消息发送的全流程打下基础。对于最基础的消息发送,我们只需要调用Message(String topic, byte[] body)构造函数new一个Message对象,然后调用producer的send方法便可发送消息了。
消息结构
RocketMQ消息封装类是org.apache.rocketmq.common.message.Message。
类图如下:
Message的基础属性只要包括:消息所属主题topic、消息flag、扩展属性、消息体。
构造函数有如下4个:
- public Message(String topic, byte[] body)
- public Message(String topic, String tags, String keys, int flag, byte[] body, boolean waitStoreMsgOK)
- public Message(String topic, String tags, byte[] body)
- public Message(String topic, String tags, String keys, byte[] body)
最基础的便是第一个构造函数只需要topic和消息体即可。其他的便是设置些扩展属性,Message扩展属性只要包含下面几个:
- tag:消息TAG,用于消息过滤。
- keys:Message索引键,多个用空格隔开,RocketMQ可以根据这些key快速检索到消息。
- waitStoreMsgOK:消息发送时是否等消息存储完成后再返回。
- delayTimeLevel:消息延迟级别,用于定时消息或消息重试。
这些扩展属性都会通过方法putProperty存储在Message的properties中。
消息发送示例
public static void main(String[] args) throws MQClientException, InterruptedException {
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
producer.setNamesrvAddr("127.0.0.1:9876");
producer.start();
try {
/*
* Create a message instance, specifying topic and message body.
*/
Message msg = new Message("TopicTest" , ("Hello RocketMQ ").getBytes(RemotingHelper.DEFAULT_CHARSET));
/*
* Call send message to deliver message to one of brokers.
*/
SendResult sendResult = producer.send(msg);
System.out.printf("%s%n", sendResult);
} catch (Exception e) {
e.printStackTrace();
Thread.sleep(1000);
}
/*
* Shut down once the producer instance is not longer in use.
*/
producer.shutdown();
}
最关键的便是new一个Message对象,只需要topic
和消息体
即可,然后调用producer的send方法便可发送消息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。