前提
在使用RocketMQ之前,需要先在linux安装一个RocketMQ,并启动。
入门依赖
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-store</artifactId>
<version>4.7.1</version>
</dependency>
基本流程
我们先写出下列代码,以熟悉rocketMQ
生产者类:
//新建生产者对象
DefaultMQProducer producer = new DefaultMQProducer("p1");//设置组名
//设置name server地址
producer.setNamesrvAddr("192.168.64.141:9876");
//启动(连接服务器)
producer.start();
while (true){
String s = new Scanner(System.in).nextLine();//Topic相当于是1级分类,tags相当于2级分类。
Message message = new Message("Topic1","Tag1",s.getBytes());
SendResult sendResult = producer.send(message);
System.out.println(sendResult);
}
//用Message对象封装消息,发送的目标位置
//发送到Topic1
消费者类:
//新建消费者对象
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("p1");
/** push——有消息就推送一次。
* pull——消费者主动拉取,2次请求(消息处理非常慢,有阻塞)
* */
//设置name server
consumer.setNamesrvAddr("192.168.64.141:9876");
//从哪接收消息,订阅消息
//从哪订阅消息————主题,"Tag1 || Tag2 || Tag3"或者 "*"
consumer.subscribe("Topic1","Tag1");//从哪订阅消息
//添加处理消息的监听器
consumer.setMessageListener((MessageListenerConcurrently) (list, consumeConcurrentlyContext) -> {
for (MessageExt ext: list) {
System.out.println("收到:"+new String(ext.getBody()));
}
// return ConsumeConcurrentlyStatus.RECONSUME_LATER;
// 如果消息处理失败,要求服务器重新发送这条消息,18次,(间隔越来越长,最大2h)重新消费。
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;//消息处理成功
});
consumer.start();
//启动