项目目录结构
pom 依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<!-- springboot-web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
OrderEntity
package com.mayikt.entity;
import lombok.Data;
import java.io.Serializable;
@Data
public class OrderEntity implements Serializable {
private String orderId;
private String orderName;
public OrderEntity(String orderId, String orderName) {
this.orderId = orderId;
this.orderName = orderName;
}
}
ProducerController
package com.mayikt.producer;
import com.mayikt.entity.OrderEntity;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.annotation.Order;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
public class ProducerController {
@Autowired
private RocketMQTemplate rocketMQTemplate;
@RequestMapping("/sendOrder")
public String sendOrder(){
OrderEntity orderEntity = new OrderEntity("123456", "蚂蚁课堂");
rocketMQTemplate.convertAndSend("mayikt-topic", orderEntity);
return "success";
}
public static void main(String[] args) {
SpringApplication.run(ProducerController.class);
}
}
application.yml
rocketmq:
name-server: 192.168.144.172:9876
producer:
group: mayikt_producer
server:
port: 8088
在ProducerController里启动项目 ,输入网址:127.0.0.1:8088/sendOrder
在RocketMQ控制台可以看到这条消息,这样生产者就成功投递了消息
接下来是消费者消费消息了
OrdeConsumer:
package com.mayikt.consumer;
import com.mayikt.entity.OrderEntity;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;
@Service
@RocketMQMessageListener(topic = "mayikt-topic", consumerGroup = "mayiktTopic")
public class OrdeConsumer implements RocketMQListener<OrderEntity> {
@Override
public void onMessage(OrderEntity o) {
System.out.println("o:" + o.toString());
}
}
AppRocketMq:
package com.mayikt;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AppRocketMq {
public static void main(String[] args) {
SpringApplication.run(AppRocketMq.class);
}
}
启动项目AppRocketMq
输入网址:127.0.0.1:8088/sendOrder
然后在RocketMQ的控制台的消息里面,选择主题:mayikt-topic
里面可以看到所有的未消费和已消费的信息,都在这里面