From da4a9786836f467ee35b0bce408d6a6d272b021d Mon Sep 17 00:00:00 2001
From: YunaiV <>
Date: Sun, 5 Jan 2020 12:56:01 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20skywalking=20=E7=A4=BA?=
=?UTF-8?q?=E4=BE=8B=20-=20rabbitmq?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lab-39/lab-39-kafka/pom.xml | 4 +-
lab-39/lab-39-rabbitmq-demo/pom.xml | 29 ++++++++++++++
.../skywalkingdemo/RabbitMQApplication.java | 13 ++++++
.../skywalkingdemo/config/RabbitConfig.java | 40 +++++++++++++++++++
.../skywalkingdemo/consumer/DemoConsumer.java | 21 ++++++++++
.../controller/DemoController.java | 26 ++++++++++++
.../skywalkingdemo/message/DemoMessage.java | 34 ++++++++++++++++
.../skywalkingdemo/producer/DemoProducer.java | 22 ++++++++++
.../src/main/resources/application.yaml | 10 +++++
.../target/classes/application.yaml | 10 +++++
lab-39/pom.xml | 1 +
11 files changed, 208 insertions(+), 2 deletions(-)
create mode 100644 lab-39/lab-39-rabbitmq-demo/pom.xml
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/RabbitMQApplication.java
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/config/RabbitConfig.java
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/consumer/DemoConsumer.java
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/message/DemoMessage.java
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/producer/DemoProducer.java
create mode 100644 lab-39/lab-39-rabbitmq-demo/src/main/resources/application.yaml
create mode 100644 lab-39/lab-39-rabbitmq-demo/target/classes/application.yaml
diff --git a/lab-39/lab-39-kafka/pom.xml b/lab-39/lab-39-kafka/pom.xml
index 6b0f942d..f4c57120 100644
--- a/lab-39/lab-39-kafka/pom.xml
+++ b/lab-39/lab-39-kafka/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 2.2.2.RELEASE
+ 2.1.11.RELEASE
4.0.0
@@ -18,7 +18,7 @@
org.springframework.kafka
spring-kafka
- 2.3.3.RELEASE
+ 2.2.11.RELEASE
diff --git a/lab-39/lab-39-rabbitmq-demo/pom.xml b/lab-39/lab-39-rabbitmq-demo/pom.xml
new file mode 100644
index 00000000..814b8bf5
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/pom.xml
@@ -0,0 +1,29 @@
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.2.1.RELEASE
+
+
+ 4.0.0
+
+ lab-39-rabbitmq-demo
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
diff --git a/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/RabbitMQApplication.java b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/RabbitMQApplication.java
new file mode 100644
index 00000000..0555ea13
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/RabbitMQApplication.java
@@ -0,0 +1,13 @@
+package cn.iocoder.springboot.lab39.skywalkingdemo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class RabbitMQApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(RabbitMQApplication.class, args);
+ }
+
+}
diff --git a/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/config/RabbitConfig.java b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/config/RabbitConfig.java
new file mode 100644
index 00000000..195af5c1
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/config/RabbitConfig.java
@@ -0,0 +1,40 @@
+package cn.iocoder.springboot.lab39.skywalkingdemo.config;
+
+import cn.iocoder.springboot.lab39.skywalkingdemo.message.DemoMessage;
+import org.springframework.amqp.core.Binding;
+import org.springframework.amqp.core.BindingBuilder;
+import org.springframework.amqp.core.DirectExchange;
+import org.springframework.amqp.core.Queue;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class RabbitConfig {
+
+ // 创建 Queue
+ @Bean
+ public Queue demoQueue() {
+ return new Queue(DemoMessage.QUEUE, // Queue 名字
+ true, // durable: 是否持久化
+ false, // exclusive: 是否排它
+ false); // autoDelete: 是否自动删除
+ }
+
+ // 创建 Direct Exchange
+ @Bean
+ public DirectExchange demoExchange() {
+ return new DirectExchange(DemoMessage.EXCHANGE,
+ true, // durable: 是否持久化
+ false); // exclusive: 是否排它
+ }
+
+ // 创建 Binding
+ // Exchange:DemoMessage.EXCHANGE
+ // Routing key:DemoMessage.ROUTING_KEY
+ // Queue:DemoMessage.QUEUE
+ @Bean
+ public Binding demoBinding() {
+ return BindingBuilder.bind(demoQueue()).to(demoExchange()).with(DemoMessage.ROUTING_KEY);
+ }
+
+}
diff --git a/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/consumer/DemoConsumer.java b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/consumer/DemoConsumer.java
new file mode 100644
index 00000000..a16ee721
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/consumer/DemoConsumer.java
@@ -0,0 +1,21 @@
+package cn.iocoder.springboot.lab39.skywalkingdemo.consumer;
+
+import cn.iocoder.springboot.lab39.skywalkingdemo.message.DemoMessage;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.amqp.rabbit.annotation.RabbitHandler;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+@Component
+@RabbitListener(queues = DemoMessage.QUEUE)
+public class DemoConsumer {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @RabbitHandler
+ public void onMessage(DemoMessage message) {
+ logger.info("[onMessage][线程编号:{} 消息内容:{}]", Thread.currentThread().getId(), message);
+ }
+
+}
diff --git a/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java
new file mode 100644
index 00000000..cc341bd7
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/controller/DemoController.java
@@ -0,0 +1,26 @@
+package cn.iocoder.springboot.lab39.skywalkingdemo.controller;
+
+import cn.iocoder.springboot.lab39.skywalkingdemo.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("/rabbitmq")
+ public String echo() {
+ this.sendMessage(1);
+ return "rabbitmq";
+ }
+
+ public void sendMessage(Integer id) {
+ producer.syncSend(id);
+ }
+
+}
diff --git a/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/message/DemoMessage.java b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/message/DemoMessage.java
new file mode 100644
index 00000000..8714ad9e
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/message/DemoMessage.java
@@ -0,0 +1,34 @@
+package cn.iocoder.springboot.lab39.skywalkingdemo.message;
+
+import java.io.Serializable;
+
+public class DemoMessage implements Serializable {
+
+ public static final String QUEUE = "QUEUE_DEMO_";
+
+ public static final String EXCHANGE = "EXCHANGE_DEMO_";
+
+ public static final String ROUTING_KEY = "ROUTING_KEY_";
+
+ /**
+ * 编号
+ */
+ 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-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/producer/DemoProducer.java b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/producer/DemoProducer.java
new file mode 100644
index 00000000..35d206cf
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/java/cn/iocoder/springboot/lab39/skywalkingdemo/producer/DemoProducer.java
@@ -0,0 +1,22 @@
+package cn.iocoder.springboot.lab39.skywalkingdemo.producer;
+
+import cn.iocoder.springboot.lab39.skywalkingdemo.message.DemoMessage;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class DemoProducer {
+
+ @Autowired
+ private RabbitTemplate rabbitTemplate;
+
+ public void syncSend(Integer id) {
+ // 创建 DemoMessage 消息
+ DemoMessage message = new DemoMessage();
+ message.setId(id);
+ // 同步发送消息
+ rabbitTemplate.convertAndSend(DemoMessage.EXCHANGE, DemoMessage.ROUTING_KEY, message);
+ }
+
+}
diff --git a/lab-39/lab-39-rabbitmq-demo/src/main/resources/application.yaml b/lab-39/lab-39-rabbitmq-demo/src/main/resources/application.yaml
new file mode 100644
index 00000000..208ac632
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/src/main/resources/application.yaml
@@ -0,0 +1,10 @@
+server:
+ port: 8079
+
+spring:
+ # RabbitMQ 配置项,对应 RabbitProperties 配置类
+ rabbitmq:
+ host: 127.0.0.1 # RabbitMQ 服务的地址
+ port: 5672 # RabbitMQ 服务的端口
+ username: guest # RabbitMQ 服务的账号
+ password: guest # RabbitMQ 服务的密码
diff --git a/lab-39/lab-39-rabbitmq-demo/target/classes/application.yaml b/lab-39/lab-39-rabbitmq-demo/target/classes/application.yaml
new file mode 100644
index 00000000..208ac632
--- /dev/null
+++ b/lab-39/lab-39-rabbitmq-demo/target/classes/application.yaml
@@ -0,0 +1,10 @@
+server:
+ port: 8079
+
+spring:
+ # RabbitMQ 配置项,对应 RabbitProperties 配置类
+ rabbitmq:
+ host: 127.0.0.1 # RabbitMQ 服务的地址
+ port: 5672 # RabbitMQ 服务的端口
+ username: guest # RabbitMQ 服务的账号
+ password: guest # RabbitMQ 服务的密码
diff --git a/lab-39/pom.xml b/lab-39/pom.xml
index a403a343..d474f837 100644
--- a/lab-39/pom.xml
+++ b/lab-39/pom.xml
@@ -21,6 +21,7 @@
lab-39-elasticsearch-jest
lab-39-rocketmq
lab-39-kafka
+ lab-39-rabbitmq-demo