diff --git a/lab-39/lab-39-elasticsearch-jest/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java b/lab-39/lab-39-elasticsearch-jest/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java index b35ab07e..70a104c7 100644 --- a/lab-39/lab-39-elasticsearch-jest/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java +++ b/lab-39/lab-39-elasticsearch-jest/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java @@ -11,7 +11,7 @@ import java.util.Date; @RestController @RequestMapping("/demo") - public class DemoController { +public class DemoController { @Autowired private ESUserRepository userRepository; diff --git a/lab-39/lab-39-rocketmq/pom.xml b/lab-39/lab-39-rocketmq/pom.xml new file mode 100644 index 00000000..2453cd92 --- /dev/null +++ b/lab-39/lab-39-rocketmq/pom.xml @@ -0,0 +1,30 @@ + + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + 4.0.0 + + lab-39-rocketmq + + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.apache.rocketmq + rocketmq-spring-boot-starter + 2.0.4 + + + + diff --git a/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/RocketMQApplication.java b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/RocketMQApplication.java new file mode 100644 index 00000000..bacf6f20 --- /dev/null +++ b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/RocketMQApplication.java @@ -0,0 +1,13 @@ +package cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class RocketMQApplication { + + public static void main(String[] args) { + SpringApplication.run(RocketMQApplication.class, args); + } + +} diff --git a/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/consumer/DemoConsumer.java b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/consumer/DemoConsumer.java new file mode 100644 index 00000000..6bac4b83 --- /dev/null +++ b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/consumer/DemoConsumer.java @@ -0,0 +1,24 @@ +package cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.consumer; + +import cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.message.DemoMessage; +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +@RocketMQMessageListener( + topic = DemoMessage.TOPIC, + consumerGroup = "demo-consumer-group-" + DemoMessage.TOPIC +) +public class DemoConsumer implements RocketMQListener { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Override + public void onMessage(DemoMessage message) { + logger.info("[onMessage][线程编号:{} 消息内容:{}]", Thread.currentThread().getId(), message); + } + +} diff --git a/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/controller/DemoController.java b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/controller/DemoController.java new file mode 100644 index 00000000..ac72f9f9 --- /dev/null +++ b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/controller/DemoController.java @@ -0,0 +1,26 @@ +package cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.controller; + +import cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.producer.DemoProducer; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo") +public class DemoController { + + @Autowired + private DemoProducer producer; + + @GetMapping("/rocketmq") + public String echo() { + this.sendMessage(1); + return "rocketmq"; + } + + public void sendMessage(Integer id) { + producer.syncSend(id); + } + +} diff --git a/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/message/DemoMessage.java b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/message/DemoMessage.java new file mode 100644 index 00000000..5d9e0991 --- /dev/null +++ b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/message/DemoMessage.java @@ -0,0 +1,31 @@ +package cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.message; + +/** + * 示例的 Message 消息 + */ +public class DemoMessage { + + public static final String TOPIC = "DEMO"; + + /** + * 编号 + */ + private Integer id; + + public DemoMessage setId(Integer id) { + this.id = id; + return this; + } + + public Integer getId() { + return id; + } + + @Override + public String toString() { + return "DemoMessage{" + + "id=" + id + + '}'; + } + +} diff --git a/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/producer/DemoProducer.java b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/producer/DemoProducer.java new file mode 100644 index 00000000..2c8d58f7 --- /dev/null +++ b/lab-39/lab-39-rocketmq/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/rocketmqdemo/producer/DemoProducer.java @@ -0,0 +1,23 @@ +package cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.producer; + +import cn.iocoder.springboot.lab39.skywalkingdemo.rocketmqdemo.message.DemoMessage; +import org.apache.rocketmq.client.producer.SendResult; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class DemoProducer { + + @Autowired + private RocketMQTemplate rocketMQTemplate; + + public SendResult syncSend(Integer id) { + // 创建 DemoMessage 消息 + DemoMessage message = new DemoMessage(); + message.setId(id); + // 同步发送消息 + return rocketMQTemplate.syncSend(DemoMessage.TOPIC, message); + } + +} diff --git a/lab-39/lab-39-rocketmq/src/main/resources/application.yaml b/lab-39/lab-39-rocketmq/src/main/resources/application.yaml new file mode 100644 index 00000000..a0314e9e --- /dev/null +++ b/lab-39/lab-39-rocketmq/src/main/resources/application.yaml @@ -0,0 +1,10 @@ +server: + port: 8079 + +# rocketmq 配置项,对应 RocketMQProperties 配置类 +rocketmq: + name-server: 127.0.0.1:9876 # RocketMQ Namesrv + # Producer 配置项 + producer: + group: demo-producer-group # 生产者分组 + send-message-timeout: 3000 # 发送消息超时时间,单位:毫秒。默认为 3000 。 diff --git a/lab-39/lab-39-rocketmq/target/classes/application.yaml b/lab-39/lab-39-rocketmq/target/classes/application.yaml new file mode 100644 index 00000000..a0314e9e --- /dev/null +++ b/lab-39/lab-39-rocketmq/target/classes/application.yaml @@ -0,0 +1,10 @@ +server: + port: 8079 + +# rocketmq 配置项,对应 RocketMQProperties 配置类 +rocketmq: + name-server: 127.0.0.1:9876 # RocketMQ Namesrv + # Producer 配置项 + producer: + group: demo-producer-group # 生产者分组 + send-message-timeout: 3000 # 发送消息超时时间,单位:毫秒。默认为 3000 。 diff --git a/lab-39/pom.xml b/lab-39/pom.xml index ea421d92..25477c12 100644 --- a/lab-39/pom.xml +++ b/lab-39/pom.xml @@ -19,6 +19,7 @@ lab-39-mongodb lab-39-elasticsearch lab-39-elasticsearch-jest + lab-39-rocketmq