1、下载依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.7.1</version>
</dependency>
2、编写生产者和消费者
2.1、编写生产者(包含同步消息、异步消息、单向消息、延迟消息、批量消息)
public class Producer {
public static void main(String[] args) throws Exception {
//1.创建消息生产者Producer,并指定生产者组名
DefaultMQProducer producer=new DefaultMQProducer("group1");
//2.指定nameServer地址
producer.setNamesrvAddr("127.0.0.1:9876");
//3.启动Producer
producer.start();
for(int i=0;i<5;i++){
//4.创建消息对象,指定主题Topic,tag和消息体
Message message=new Message("topic","tag",("hello world"+i).getBytes());
//设置延迟时间
//message.setDelayTimeLevel(2);
//5.发送消息
//5.1同步消息
/*SendResult sendResult=producer.send(message);
System.out.println("发送状态:"+sendResult.getSendStatus())*/
//5.2异步消息
/*producer.send(message, new SendCallback() {
@Override
public void onSuccess(SendResult sendResult) {
System.out.println("发送成功");
}
@Override
public void onException(Throwable throwable) {
System.out.println("发送失败");
}
});*/
//5.3单向消息
//producer.sendOneway(message);
//5.4批量消息
/*
List<Message> msgs=new ArrayList<>();
Message message=new Message("topic","batch",("batch"+1).getBytes());
msgs.add(message);
Message message1=new Message("topic","batch",("batch"+2).getBytes());
msgs.add(message1);
SendResult sendResult=producer.send(msgs);
*/
}
//6.关闭生产者Producer
producer.shutdown();
}
}
编写消费者(集群模式和广播模式)
public class Consumer {
public static void main(String[] args) throws Exception {
//1.创建消息消费者Consumer,并指定消费者组名
DefaultMQPushConsumer consumer=new DefaultMQPushConsumer("group1");
//2.指定nameServer地址
consumer.setNamesrvAddr("127.0.0.1:9876");
//3.订阅主题 topic 和tag
consumer.subscribe("topic","tag");
//通过setMessageModel设置是集群还是广播模式,模式是集群模式
//consumer.setMessageModel(MessageModel.BROADCASTING);
//4.设置回调函数 处理消息
consumer.registerMessageListener(new MessageListenerConcurrently() {
//接受消息内容
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
for(int i=0;i<msgs.size();i++){
System.out.println(new String(msgs.get(i).getBody()));
}
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
//5.启动Consumer
consumer.start();
}
}
源码:https://gitee.com/chenyd/springboot-chen-modules.git
中文文档: https://github.com/apache/rocketmq/blob/master/docs/cn/concept.md