一、前言
首先声明:本篇中编写的案例,基本都是来自官网。
简单的入门案例:
http://rocketmq.apache.org/docs/simple-example/
更多案例:https://github.com/apache/rocketmq/tree/master/example
常见消息用法:
- 简单消息
- 广播消息
- 延时发送(计划消息)
- 批量发送消息
- 顺序消息
- 消息筛选
- 事务消息(这里不做讲解,专门在分布式事务里面讲解)
二、开发环境搭建
不管是生产者还是消费者,搭建都很简单,引入rocketmq-client相关包即可。
<dependencies>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.5.1</version>
</dependency>
</dependencies>
三、简单消息
(一)Consumer
这里简单的使用DefaultMQPushConsumer来接受消息,基于方法回调来接受消息
package com.firewolf.rocketmq;
import java.util.List;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.message.MessageExt;
/**
* 作者:刘兴 时间:2019-07-11
**/
public class Consumer {
public static void main(String[] args) throws InterruptedException, MQClientException {
//创建消费者实例,指定消费者组
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer-group1");
//指定nameserver地址,多个用;隔开
consumer.setNamesrvAddr("10.211.55.6:9876");
//指定订阅的主题和tag,*表示订阅这个主题下的所有消息
consumer.subscribe("mytopic", "*");
//注册接受到消息的回调函数
consumer.registerMessageListener(new MessageListenerConcurrently() {
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
ConsumeConcurrentlyContext consumeConcurrentlyContext) {
System.out.printf("%s 接收到消息: %s %n", Thread.currentThread().getName(), msgs);
return ConsumeConcurrentlyStatus.CONSUME