文章目录
服务搭建 & 可视化界面
服务搭建
服务下载地址
解压后进入bin目录
启动nameserver服务:
mqnamesrv.cmd
启动mqbroker.cmd服务:
mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true
服务启动成功!!!
(服务启动成功后再进行下一步可视乎界面配置,因为它需要连接Rocket服务)
可视化界面
解压后用编译器打开
可视化的启动端口
打成Jar包
在这个界面
执行命令
打包命令
mvn clean package -D maven.test.skip=true
会自动生成一个targer文件
点进去执行java运行jar包的命令
java -jar xxx.jar
访问:127.0.0.1:设置的端口
可视化界面搭建成功
简单入门使用
导入pom文件
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.4.0</version>
</dependency>
消息发送者
package com.guigu.cloud.rocketMQ;
import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;
public class Provider {
public static void main(String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
/*消息发送*/
//1. 创建消息生产者, 指定生产者所属的组名
DefaultMQProducer producer = new DefaultMQProducer("myproducer-group");
//2. 指定Nameserver地址
producer.setNamesrvAddr("127.0.0.1:9876");
//3. 启动生产者
producer.start();
//4. 创建消息对象,指定主题、标签和消息体
String data = "holle word";
Message msg = new Message("myTopic", "myTag", data.getBytes());
//5. 发送消息
SendResult sendResult = producer.send(msg, 10000);
System.out.println(sendResult);
//6. 关闭生产者
producer.shutdown();
}
}
消息消费者
package com.guigu.cloud.rocketMQ;
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;
import java.nio.charset.StandardCharsets;
import java.util.List;
public class Consumer {
public static void main(String[] args) throws MQClientException {
/*消息接受*/
//1. 创建消息消费者, 指定消费者所属的组名
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("myproducer-group");
//2. 指定Nameserver地址
consumer.setNamesrvAddr("127.0.0.1:9876");
//3.指定消费者订阅的主题和标签
consumer.subscribe("myTopic", "myTag");
//4.设置回调函数,编写处理处理消息的方法
consumer.registerMessageListener(new MessageListenerConcurrently() {
@Override
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
ConsumeConcurrentlyContext consumeConcurrentlyContext) {
for (MessageExt msg : msgs) {
String s = new String(msg.getBody(), StandardCharsets.UTF_8);
System.out.println(s);
}
//返回消费状态
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
//5.启动消费者
consumer.start();
}
}
测试效果
启动消息消费者
查看可视化管理器
然后启动消息发送者
查看消息消费者
成功!!!
整合SpringBoot 使用
导入pom文件
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
消息发送者
编写发送者 application.yml配置文件
server:
port: 24104
spring:
application:
name: rocketmq-provider
rocketmq:
# 服务器地址
name-server: 127.0.0.1:9876
producer:
# 消息组
group: provider
编写发送者 Controller
package com.guigu.cloud.controller;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("rocketmq")
public class RocketProviderController {
@Resource
private RocketMQTemplate rocketMQTemplate;
@PostMapping
public String test(@RequestBody Map<String,Object> map){
//获取数据
// String data = (String)map.get("data");
//发送数据
rocketMQTemplate.convertAndSend("provider-topic",map);
return "success";
}
}
编写发送者 启动类
package com.guigu.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RocketmqProviderApplication24104 {
public static void main(String[] args) {
SpringApplication.run(RocketmqProviderApplication24104.class,args);
}
}
消息消费者
编写消费者 application.yml配置文件
server:
port: 7786
spring:
application:
name: rocketmq-consumer
rocketmq:
name-server: 127.0.0.1:9876
编写消费者 监听器
package com.guigu.cloud.listener.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
@Slf4j
/*
consumerGroup:消息组
topic:消息话题
*/
@RocketMQMessageListener(consumerGroup = "provider", topic = "provider-topic")
//实现RocketMQ的监听接口
public class RocketMassageImpl implements RocketMQListener<String> {
@Override
public void onMessage(String str) {
Map<String, Object> map = (Map<String, Object>) JSONObject.parse(str);
log.info("您接受到一条新消息:"+map);
log.info("姓名:"+map.get("name"));
log.info("性别:"+map.get("sex"));
log.info("性别:"+map.get("sql"));
}
}
编写消费者 启动类
package com.guigu.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class RocketmqConsumerApplication7786 {
public static void main(String[] args) {
SpringApplication.run(RocketmqConsumerApplication7786.class,args);
}
}
运行测试
启动消费者&发送者服务
使用postman测试工具访问发送者的控制层
查看消费者结果
成功!!!