Procházet zdrojové kódy

springCloud-seata模块整合

lengfaqiang před 3 roky
rodič
revize
9c15547034

+ 22 - 0
pom.xml

@@ -141,6 +141,28 @@
             <artifactId>sentinel-datasource-nacos</artifactId>
             <artifactId>sentinel-datasource-nacos</artifactId>
 <!--            <version>1.8.0</version>-->
 <!--            <version>1.8.0</version>-->
         </dependency>
         </dependency>
+        <!-- 注意一定要引入对版本,要引入spring-cloud版本seata,而不是springboot版本的seata-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
+            <!-- 排除掉springcloud默认的seata版本,以免版本不一致出现问题-->
+            <exclusions>
+                <exclusion>
+                    <groupId>io.seata</groupId>
+                    <artifactId>seata-spring-boot-starter</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.seata</groupId>
+                    <artifactId>seata-all</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- 上面排除掉了springcloud默认色seata版本,此处引入和seata-server版本对应的seata包-->
+        <dependency>
+            <groupId>io.seata</groupId>
+            <artifactId>seata-spring-boot-starter</artifactId>
+            <version>1.6.1</version>
+        </dependency>
 
 
         <dependency>
         <dependency>
             <groupId>org.apache.tomcat.embed</groupId>
             <groupId>org.apache.tomcat.embed</groupId>

+ 22 - 0
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/SysUserController.java

@@ -12,6 +12,7 @@ import com.sckw.example.service.SysUserService;
 import com.sckw.stream.enums.SmsCodeEnum;
 import com.sckw.stream.enums.SmsCodeEnum;
 import com.sckw.stream.model.SckwMessage;
 import com.sckw.stream.model.SckwMessage;
 import com.sckw.stream.model.SckwSms;
 import com.sckw.stream.model.SckwSms;
+import io.seata.spring.annotation.GlobalTransactional;
 import lombok.AllArgsConstructor;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RBucket;
 import org.redisson.api.RBucket;
@@ -82,6 +83,10 @@ public class SysUserController {
     }
     }
 
 
 
 
+    /**
+     * 限流测试示例
+     * @return
+     */
     //value将该方法定义为sentinel的资源,blockHandlerClass指明流控处理的类,blockHandler是流控时调用的方法。
     //value将该方法定义为sentinel的资源,blockHandlerClass指明流控处理的类,blockHandler是流控时调用的方法。
     //这里需要注意处理异常的方法必须是静态方法添加static, 并需要添加sentinel的异常参数BlockException。
     //这里需要注意处理异常的方法必须是静态方法添加static, 并需要添加sentinel的异常参数BlockException。
     @RequestMapping(value = "sentinelFlowDemo", method = RequestMethod.GET)
     @RequestMapping(value = "sentinelFlowDemo", method = RequestMethod.GET)
@@ -90,6 +95,11 @@ public class SysUserController {
         return HttpResult.ok("sentinelFlowDemo正常返回");
         return HttpResult.ok("sentinelFlowDemo正常返回");
     }
     }
 
 
+    /**
+     * 熔断测试示例
+     * @param id
+     * @return
+     */
     @RequestMapping(value = "sentinelDegradeDemo", method = RequestMethod.GET)
     @RequestMapping(value = "sentinelDegradeDemo", method = RequestMethod.GET)
     @SentinelResource(value = "sentinelDegradeDemo", blockHandlerClass = SysUserController.class, blockHandler = "sentinelDegradeBlock")
     @SentinelResource(value = "sentinelDegradeDemo", blockHandlerClass = SysUserController.class, blockHandler = "sentinelDegradeBlock")
     public HttpResult sentinelDegradeDemo(@RequestParam("id") String id) {
     public HttpResult sentinelDegradeDemo(@RequestParam("id") String id) {
@@ -103,6 +113,18 @@ public class SysUserController {
         return HttpResult.ok("sentinelDegradeDemo正常返回");
         return HttpResult.ok("sentinelDegradeDemo正常返回");
     }
     }
 
 
+    /**
+     * 分布式事务示例
+     * @return
+     */
+    @GlobalTransactional
+    @RequestMapping(value = "/globalTransactionalDemo", method = RequestMethod.GET)
+    public HttpResult globalTransactionalDemo() {
+        return HttpResult.ok("globalTransactionalDemo");
+    }
+
+
+
 
 
 
 
 
 

+ 5 - 37
sckw-modules/sckw-example/src/main/resources/bootstrap-dev.yml

@@ -9,6 +9,7 @@ spring:
     nacos:
     nacos:
       discovery:
       discovery:
         # 服务注册地址
         # 服务注册地址
+#        server-addr: 47.108.162.14:8848
         server-addr: 127.0.0.1:8848
         server-addr: 127.0.0.1:8848
         # 命名空间
         # 命名空间
         namespace: sckw-service-platform-dev
         namespace: sckw-service-platform-dev
@@ -59,8 +60,11 @@ spring:
         client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
         client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
         port: 8719  #默认8719端口,如果被占用会向上扫描。
         port: 8719  #默认8719端口,如果被占用会向上扫描。
         #控制台地址
         #控制台地址
-#        dashboard: 47.108.162.14:8080
+#        dashboard: 47.108.162.14:19527
         dashboard: 127.0.0.1:9527
         dashboard: 127.0.0.1:9527
+      log:
+        #日志路径
+        dir: logs/sentinel
         # 默认将调用链路收敛,导致链路流控效果无效
         # 默认将调用链路收敛,导致链路流控效果无效
         web-context-unify: false
         web-context-unify: false
         #持久化nacos配置中
         #持久化nacos配置中
@@ -71,7 +75,6 @@ spring:
           nacos:
           nacos:
             # 设置Nacos的连接地址、命名空间和Group ID
             # 设置Nacos的连接地址、命名空间和Group ID
             namespace:  sckw-service-platform-dev
             namespace:  sckw-service-platform-dev
-#            server-addr:  127.0.0.1:8848
             server-addr:  ${spring.cloud.nacos.discovery.server-addr}
             server-addr:  ${spring.cloud.nacos.discovery.server-addr}
 #            username: ${spring.cloud.nacos.discovery.username}
 #            username: ${spring.cloud.nacos.discovery.username}
 #            password: ${spring.cloud.nacos.discovery.password}
 #            password: ${spring.cloud.nacos.discovery.password}
@@ -89,44 +92,9 @@ spring:
             server-addr: ${spring.cloud.nacos.discovery.server-addr}
             server-addr: ${spring.cloud.nacos.discovery.server-addr}
 #            data-id: ${spring.application.name}-sentinel-degrade-rules
 #            data-id: ${spring.application.name}-sentinel-degrade-rules
             data-id: sckw-example-sentinel-degrade-rules
             data-id: sckw-example-sentinel-degrade-rules
-#            data-id:  sentinel-degrade-rule-json
             group-id: SENTINEL_GROUP
             group-id: SENTINEL_GROUP
             #熔断
             #熔断
             rule-type: degrade
             rule-type: degrade
-
-#        flow:
-
-#          nacos:
-#            server-addr: localhost:8848
-#            dataId: ${spring.application.name}-flow-rules
-#            groupId: SENTINEL_GROUP
-#            # 规则类型,取值见:
-#            # org.springframework.cloud.alibaba.sentinel.datasource.RuleType
-#            rule-type: flow
-#        degrade:
-#          nacos:
-#            server-addr: localhost:8848
-#            dataId: ${spring.application.name}-degrade-rules
-#            groupId: SENTINEL_GROUP
-#            rule-type: degrade
-#        system:
-#          nacos:
-#            server-addr: localhost:8848
-#            dataId: ${spring.application.name}-system-rules
-#            groupId: SENTINEL_GROUP
-#            rule-type: system
-#        authority:
-#          nacos:
-#            server-addr: localhost:8848
-#            dataId: ${spring.application.name}-authority-rules
-#            groupId: SENTINEL_GROUP
-#            rule-type: authority
-#        param-flow:
-#          nacos:
-#            server-addr: localhost:8848
-#            dataId: ${spring.application.name}-param-flow-rules
-#            groupId: SENTINEL_GROUP
-#            rule-type: param-flow
       #取消慢加载
       #取消慢加载
       eager: true
       eager: true