diff --git a/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/pom.xml b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/pom.xml
new file mode 100644
index 00000000..88bbd31c
--- /dev/null
+++ b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/pom.xml
@@ -0,0 +1,64 @@
+
+
+
+ labx-29
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ labx-29-sc-bus-consul-demo-listener-actuator
+
+
+ 1.8
+ 1.8
+ 2.2.4.RELEASE
+ Hoxton.SR1
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ ${spring.boot.version}
+ pom
+ import
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring.cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-bus
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+
+
diff --git a/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/ListenerDemoApplication.java b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/ListenerDemoApplication.java
new file mode 100644
index 00000000..ef24b9b8
--- /dev/null
+++ b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/ListenerDemoApplication.java
@@ -0,0 +1,15 @@
+package cn.iocoder.springcloud.labx29.listenerdemo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.bus.jackson.RemoteApplicationEventScan;
+
+@SpringBootApplication
+@RemoteApplicationEventScan
+public class ListenerDemoApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ListenerDemoApplication.class, args);
+ }
+
+}
diff --git a/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/event/UserRegisterEvent.java b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/event/UserRegisterEvent.java
new file mode 100644
index 00000000..4a25297f
--- /dev/null
+++ b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/event/UserRegisterEvent.java
@@ -0,0 +1,27 @@
+package cn.iocoder.springcloud.labx29.listenerdemo.event;
+
+import org.springframework.cloud.bus.event.RemoteApplicationEvent;
+
+/**
+ * 用户注册事件
+ */
+public class UserRegisterEvent extends RemoteApplicationEvent {
+
+ /**
+ * 用户名
+ */
+ private String username;
+
+ public UserRegisterEvent() { // 序列化
+ }
+
+ public UserRegisterEvent(Object source, String originService, String destinationService, String username) {
+ super(source, originService);
+ this.username = username;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+}
diff --git a/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/listener/UserRegisterListener.java b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/listener/UserRegisterListener.java
new file mode 100644
index 00000000..a4c52697
--- /dev/null
+++ b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/java/cn/iocoder/springcloud/labx29/listenerdemo/listener/UserRegisterListener.java
@@ -0,0 +1,22 @@
+package cn.iocoder.springcloud.labx29.listenerdemo.listener;
+
+import cn.iocoder.springcloud.labx29.listenerdemo.event.UserRegisterEvent;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ApplicationListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * 用户注册事件的监听器
+ */
+@Component
+public class UserRegisterListener implements ApplicationListener {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public void onApplicationEvent(UserRegisterEvent event) {
+ logger.info("[onApplicationEvent][监听到用户({}) 注册]", event.getUsername());
+ }
+
+}
diff --git a/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/resources/application.yml b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/resources/application.yml
new file mode 100644
index 00000000..16d2476e
--- /dev/null
+++ b/labx-29/labx-29-sc-bus-consul-demo-listener-actuator/src/main/resources/application.yml
@@ -0,0 +1,19 @@
+spring:
+ application:
+ name: listener-demo
+
+ cloud:
+ # Consul
+ consul:
+ host: 127.0.0.1
+ port: 8500
+
+server:
+ port: 18080 # 随机端口,方便启动多个消费者
+
+management:
+ endpoints:
+ # Actuator HTTP 配置项,对应 WebEndpointProperties 配置类
+ web:
+ exposure:
+ include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
diff --git a/labx-29/pom.xml b/labx-29/pom.xml
index 0fb2f4d1..9a715297 100644
--- a/labx-29/pom.xml
+++ b/labx-29/pom.xml
@@ -14,6 +14,7 @@
labx-29-sc-bus-consul-demo-publisher
labx-29-sc-bus-consul-demo-listener
+ labx-29-sc-bus-consul-demo-listener-actuator
diff --git a/pom.xml b/pom.xml
index f51d7c63..2a28e45b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
- lab-31
+
@@ -104,7 +104,7 @@
- labx-28
+
labx-29