parent
51c63e8057
commit
2be616ee49
@ -1,27 +0,0 @@
|
|||||||
//package org.jeecg.modules.cloud.ebus;
|
|
||||||
//
|
|
||||||
//import cn.hutool.core.util.ObjectUtil;
|
|
||||||
//import lombok.extern.slf4j.Slf4j;
|
|
||||||
//import org.jeecg.boot.starter.rabbitmq.event.EventObj;
|
|
||||||
//import org.jeecg.boot.starter.rabbitmq.event.JeecgBusEventHandler;
|
|
||||||
//import org.jeecg.common.base.BaseMap;
|
|
||||||
//import org.jeecg.modules.cloud.constant.CloudConstant;
|
|
||||||
//import org.springframework.stereotype.Component;
|
|
||||||
//
|
|
||||||
///**
|
|
||||||
// * 消息处理器【发布订阅】
|
|
||||||
// */
|
|
||||||
//@Slf4j
|
|
||||||
//@Component(CloudConstant.MQ_DEMO_BUS_EVENT)
|
|
||||||
//public class DemoBusEvent implements JeecgBusEventHandler {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onMessage(EventObj obj) {
|
|
||||||
// if (ObjectUtil.isNotEmpty(obj)) {
|
|
||||||
// BaseMap baseMap = obj.getBaseMap();
|
|
||||||
// String orderId = baseMap.get("orderId");
|
|
||||||
// log.info("业务处理----订单ID:" + orderId);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
package org.jeecg.modules.cloud.feign.controller;
|
|
||||||
|
|
||||||
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import org.jeecg.common.api.vo.Result;
|
|
||||||
import org.jeecg.modules.cloud.constant.CloudConstant;
|
|
||||||
import org.jeecg.modules.cloud.feign.feign.JeecgTestClient;
|
|
||||||
import org.jeecg.modules.cloud.feign.feign.JeecgTestClientDyn;
|
|
||||||
import org.jeecg.starter.cloud.feign.impl.JeecgFeignService;
|
|
||||||
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("/sys/test")
|
|
||||||
@Api(tags = "【微服务】单元测试")
|
|
||||||
public class JeecgTestFeignController {
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private JeecgFeignService jeecgFeignService;
|
|
||||||
@Autowired
|
|
||||||
private JeecgTestClient jeecgTestClient;
|
|
||||||
// @Autowired
|
|
||||||
// private RabbitMqClient rabbitMqClient;
|
|
||||||
|
|
||||||
@GetMapping("getMessage")
|
|
||||||
@ApiOperation(value = "测试feign", notes = "测试feign")
|
|
||||||
public Result<String> getMessage() {
|
|
||||||
return jeecgTestClient.getMessage("jeecg-boot");
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("getMessage2")
|
|
||||||
@ApiOperation(value = "测试动态feign", notes = "测试动态feign")
|
|
||||||
public Result<String> getMessage2() {
|
|
||||||
JeecgTestClientDyn myClientDyn = jeecgFeignService.newInstance(JeecgTestClientDyn.class, CloudConstant.SERVER_NAME_JEECGDEMO);
|
|
||||||
return myClientDyn.getMessage("动态fegin——jeecg-boot2");
|
|
||||||
}
|
|
||||||
|
|
||||||
// @GetMapping(value = "/rabbitmq")
|
|
||||||
// @ApiOperation(value = "测试rabbitmq", notes = "测试rabbitmq")
|
|
||||||
// public Result<?> rabbitMqClientTest(HttpServletRequest req) {
|
|
||||||
// //rabbitmq消息队列测试
|
|
||||||
// BaseMap map = new BaseMap();
|
|
||||||
// map.put("orderId", RandomUtil.randomNumbers(10));
|
|
||||||
// rabbitMqClient.sendMessage(CloudConstant.MQ_JEECG_PLACE_ORDER, map);
|
|
||||||
// rabbitMqClient.sendMessage(CloudConstant.MQ_JEECG_PLACE_ORDER_TIME, map,10);
|
|
||||||
//
|
|
||||||
// //rabbitmq消息总线测试
|
|
||||||
// BaseMap params = new BaseMap();
|
|
||||||
// params.put("orderId", "123456");
|
|
||||||
// rabbitMqClient.publishEvent(CloudConstant.MQ_DEMO_BUS_EVENT, params);
|
|
||||||
// return Result.OK("MQ发送消息成功");
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
@ -1,20 +0,0 @@
|
|||||||
package org.jeecg.modules.cloud.feign.feign;
|
|
||||||
|
|
||||||
import org.jeecg.common.api.vo.Result;
|
|
||||||
import org.jeecg.modules.cloud.constant.CloudConstant;
|
|
||||||
import org.jeecg.modules.cloud.feign.feign.fallback.JeecgTestClientFallback;
|
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 常规feign接口定义
|
|
||||||
*/
|
|
||||||
@FeignClient(value = CloudConstant.SERVER_NAME_JEECGDEMO, fallbackFactory = JeecgTestClientFallback.class)
|
|
||||||
@Component
|
|
||||||
public interface JeecgTestClient {
|
|
||||||
|
|
||||||
@GetMapping(value = "/test/getMessage")
|
|
||||||
Result<String> getMessage(@RequestParam("name") String name);
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
package org.jeecg.modules.cloud.feign.feign;
|
|
||||||
|
|
||||||
import org.jeecg.common.api.vo.Result;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 动态feign接口定义
|
|
||||||
*/
|
|
||||||
public interface JeecgTestClientDyn {
|
|
||||||
|
|
||||||
@GetMapping(value = "/test/getMessage")
|
|
||||||
Result<String> getMessage(@RequestParam("name") String name);
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
package org.jeecg.modules.cloud.feign.feign.fallback;
|
|
||||||
|
|
||||||
import feign.hystrix.FallbackFactory;
|
|
||||||
import org.jeecg.modules.cloud.feign.feign.JeecgTestClient;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author qinfeng
|
|
||||||
*/
|
|
||||||
@Component
|
|
||||||
public class JeecgTestClientFallback implements FallbackFactory<JeecgTestClient> {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JeecgTestClient create(Throwable throwable) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,44 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>jeecg-cloud-test</artifactId>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<description>公共测试模块</description>
|
||||||
|
<artifactId>jeecg-cloud-test-more</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- 引入jeecg-boot-starter-cloud依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<artifactId>jeecg-boot-starter-cloud</artifactId>
|
||||||
|
<!--system模块需要排除jeecg-system-cloud-api-->
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<artifactId>jeecg-system-cloud-api</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<!--定时任务-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<artifactId>jeecg-boot-starter-job</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!--rabbitmq消息队列-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<artifactId>jeecg-boot-starter-rabbitmq</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- 分布式锁依赖 -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<artifactId>jeecg-boot-starter-lock</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package org.jeecg.modules.test.feign.client;
|
||||||
|
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
|
||||||
|
import org.jeecg.config.FeignConfig;
|
||||||
|
import org.jeecg.modules.test.constant.CloudConstant;
|
||||||
|
import org.jeecg.modules.test.feign.factory.JeecgTestClientFactory;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 常规feign接口定义
|
||||||
|
*/
|
||||||
|
@FeignClient(value = CloudConstant.SERVER_NAME_JEECGDEMO, configuration = FeignConfig.class,fallbackFactory = JeecgTestClientFactory.class)
|
||||||
|
@Component
|
||||||
|
public interface JeecgTestClient {
|
||||||
|
|
||||||
|
@PostMapping(value = "/test/getMessage")
|
||||||
|
Result<Object> getMessage(@RequestParam(value = "name",required = false) String name);
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
package org.jeecg.modules.test.feign.client;
|
||||||
|
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态feign接口定义
|
||||||
|
*/
|
||||||
|
public interface JeecgTestClientDyn {
|
||||||
|
|
||||||
|
@PostMapping(value = "/test/getMessage")
|
||||||
|
Result<String> getMessage(@RequestParam(value = "name",required = false) String name);
|
||||||
|
}
|
||||||
@ -0,0 +1,63 @@
|
|||||||
|
package org.jeecg.modules.test.feign.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.jeecg.boot.starter.rabbitmq.client.RabbitMqClient;
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.modules.test.feign.client.JeecgTestClient;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import com.alibaba.csp.sentinel.annotation.SentinelResource;
|
||||||
|
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/sys/test")
|
||||||
|
@Api(tags = "【微服务】单元测试")
|
||||||
|
public class JeecgTestFeignController {
|
||||||
|
|
||||||
|
// @Autowired
|
||||||
|
//private JeecgFeignService jeecgFeignService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private JeecgTestClient jeecgTestClient;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RabbitMqClient rabbitMqClient;
|
||||||
|
|
||||||
|
@PostMapping("getMessage")
|
||||||
|
@ApiOperation(value = "测试feign", notes = "测试feign")
|
||||||
|
@SentinelResource(value = "fallback",fallback = "getDefaultUser")
|
||||||
|
public Result<Object> getMessage(@RequestParam(value = "name",required = false) String name) {
|
||||||
|
return jeecgTestClient.getMessage("fegin——jeecg-boot2");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// @GetMapping("getMessage2")
|
||||||
|
// @ApiOperation(value = "测试动态feign", notes = "测试动态feign")
|
||||||
|
// public Result<String> getMessage2() {
|
||||||
|
// JeecgTestClientDyn myClientDyn = jeecgFeignService.newInstance(JeecgTestClientDyn.class, CloudConstant.SERVER_NAME_JEECGDEMO);
|
||||||
|
// return myClientDyn.getMessage("动态fegin——jeecg-boot2");
|
||||||
|
// }
|
||||||
|
|
||||||
|
@PostMapping("test")
|
||||||
|
@ApiOperation(value = "测试熔断", notes = "测试熔断")
|
||||||
|
@SentinelResource(value = "fallback",fallback = "getDefaultUser")
|
||||||
|
public Result<Object> test(@RequestParam(value = "name",required = false) String name) {
|
||||||
|
if(StringUtils.isEmpty(name)){
|
||||||
|
throw new IllegalArgumentException("name param is empty");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result.OK();
|
||||||
|
}
|
||||||
|
public Result<Object> getDefaultUser(String name) {
|
||||||
|
System.out.println("熔断,默认回调函数");
|
||||||
|
return Result.OK("访问超时");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
package org.jeecg.modules.test.feign.factory;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import feign.hystrix.FallbackFactory;
|
||||||
|
import org.jeecg.modules.test.feign.client.JeecgTestClient;
|
||||||
|
import org.jeecg.modules.test.feign.fallback.JeecgTestFallback;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author qinfeng
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class JeecgTestClientFactory implements FallbackFactory<JeecgTestClient> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JeecgTestClient create(Throwable throwable) {
|
||||||
|
JeecgTestFallback fallback = new JeecgTestFallback();
|
||||||
|
fallback.setCause(throwable);
|
||||||
|
return fallback;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
package org.jeecg.modules.test.feign.fallback;
|
||||||
|
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
|
||||||
|
import lombok.Setter;
|
||||||
|
import org.jeecg.modules.test.feign.client.JeecgTestClient;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class JeecgTestFallback implements JeecgTestClient {
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
private Throwable cause;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<Object> getMessage(String name) {
|
||||||
|
return Result.OK("访问超时");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
package org.jeecg.modules.test.xxljob;
|
||||||
|
|
||||||
|
import com.xxl.job.core.biz.model.ReturnT;
|
||||||
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* xxl-job定时任务测试
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Slf4j
|
||||||
|
public class XxclJobTest {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 简单任务
|
||||||
|
*
|
||||||
|
* @param params
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
|
||||||
|
@XxlJob(value = "testJob")
|
||||||
|
public ReturnT<String> demoJobHandler(String params) {
|
||||||
|
log.info("我是demo服务里的定时任务testJob,我执行了...............................");
|
||||||
|
return ReturnT.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init() {
|
||||||
|
log.info("init");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void destroy() {
|
||||||
|
log.info("destory");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>jeecg-cloud-test</artifactId>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<version>3.1.0</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<description>消息队列测试模块</description>
|
||||||
|
<artifactId>jeecg-cloud-test-rabbitmq</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!--rabbitmq消息队列-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.jeecgframework.boot</groupId>
|
||||||
|
<artifactId>jeecg-boot-starter-rabbitmq</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
</project>
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
package org.jeecg.modules.test.rabbitmq.constant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微服务单元测试常量定义
|
||||||
|
*/
|
||||||
|
public interface CloudConstant {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MQ测试队列名字
|
||||||
|
*/
|
||||||
|
public final static String MQ_JEECG_PLACE_ORDER = "jeecg_place_order";
|
||||||
|
public final static String MQ_JEECG_PLACE_ORDER_TIME = "jeecg_place_order_time";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MQ测试消息总线
|
||||||
|
*/
|
||||||
|
public final static String MQ_DEMO_BUS_EVENT = "demoBusEvent";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分布式锁lock key
|
||||||
|
*/
|
||||||
|
public final static String REDISSON_DEMO_LOCK_KEY1 = "demoLockKey1";
|
||||||
|
public final static String REDISSON_DEMO_LOCK_KEY2 = "demoLockKey2";
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
package org.jeecg.modules.test.rabbitmq.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.jeecg.boot.starter.rabbitmq.client.RabbitMqClient;
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.common.base.BaseMap;
|
||||||
|
import org.jeecg.modules.test.rabbitmq.constant.CloudConstant;
|
||||||
|
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;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/sys/test")
|
||||||
|
@Api(tags = "【微服务】单元测试")
|
||||||
|
public class JeecgMqTestController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RabbitMqClient rabbitMqClient;
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping(value = "/rabbitmq")
|
||||||
|
@ApiOperation(value = "测试rabbitmq", notes = "测试rabbitmq")
|
||||||
|
public Result<?> rabbitMqClientTest(HttpServletRequest req) {
|
||||||
|
//rabbitmq消息队列测试
|
||||||
|
BaseMap map = new BaseMap();
|
||||||
|
map.put("orderId", RandomUtil.randomNumbers(10));
|
||||||
|
rabbitMqClient.sendMessage(CloudConstant.MQ_JEECG_PLACE_ORDER, map);
|
||||||
|
rabbitMqClient.sendMessage(CloudConstant.MQ_JEECG_PLACE_ORDER_TIME, map,10);
|
||||||
|
return Result.OK("MQ发送消息成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping(value = "/rabbitmq2")
|
||||||
|
@ApiOperation(value = "rabbitmq消息总线测试", notes = "rabbitmq消息总线测试")
|
||||||
|
public Result<?> rabbitmq2(HttpServletRequest req) {
|
||||||
|
|
||||||
|
//rabbitmq消息总线测试
|
||||||
|
BaseMap params = new BaseMap();
|
||||||
|
params.put("orderId", "123456");
|
||||||
|
rabbitMqClient.publishEvent(CloudConstant.MQ_DEMO_BUS_EVENT, params);
|
||||||
|
return Result.OK("MQ发送消息成功");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,28 @@
|
|||||||
|
package org.jeecg.modules.test.rabbitmq.event;
|
||||||
|
|
||||||
|
import org.jeecg.boot.starter.rabbitmq.event.EventObj;
|
||||||
|
import org.jeecg.boot.starter.rabbitmq.event.JeecgBusEventHandler;
|
||||||
|
import org.jeecg.common.base.BaseMap;
|
||||||
|
import org.jeecg.modules.test.rabbitmq.constant.CloudConstant;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 消息处理器【发布订阅】
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component(CloudConstant.MQ_DEMO_BUS_EVENT)
|
||||||
|
public class DemoBusEvent implements JeecgBusEventHandler {
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(EventObj obj) {
|
||||||
|
if (ObjectUtil.isNotEmpty(obj)) {
|
||||||
|
BaseMap baseMap = obj.getBaseMap();
|
||||||
|
String orderId = baseMap.get("orderId");
|
||||||
|
log.info("业务处理----订单ID:" + orderId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
# 双库分表配置
|
||||||
|
spring:
|
||||||
|
shardingsphere:
|
||||||
|
props:
|
||||||
|
sql-show: true
|
||||||
|
datasource:
|
||||||
|
ds0:
|
||||||
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
|
url: jdbc:mysql://localhost:3306/jeecg-boot?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
username: root
|
||||||
|
password: root
|
||||||
|
ds1:
|
||||||
|
driverClassName: com.mysql.cj.jdbc.Driver
|
||||||
|
url: jdbc:mysql://localhost:3306/jeecg-boot2?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
|
||||||
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
username: root
|
||||||
|
password: root
|
||||||
|
names: ds0,ds1
|
||||||
|
# 规则配置
|
||||||
|
rules:
|
||||||
|
replica-query:
|
||||||
|
# 负载均衡算法
|
||||||
|
load-balancers:
|
||||||
|
round-robin:
|
||||||
|
type: ROUND_ROBIN
|
||||||
|
props:
|
||||||
|
default: 0
|
||||||
|
data-sources:
|
||||||
|
prds:
|
||||||
|
primary-data-source-name: ds0
|
||||||
|
replica-data-source-names: ds1
|
||||||
|
load-balancer-name: round_robin
|
||||||
|
sharding:
|
||||||
|
# 配置绑定表,每一行为一组,绑定表会提高查询效率
|
||||||
|
binding-tables:
|
||||||
|
- sys_log
|
||||||
|
# 分布式序列算法配置
|
||||||
|
key-generators:
|
||||||
|
snowflake:
|
||||||
|
type: SNOWFLAKE
|
||||||
|
props:
|
||||||
|
worker-id: 123
|
||||||
|
# 分片算法配置
|
||||||
|
sharding-algorithms:
|
||||||
|
table-classbased:
|
||||||
|
props:
|
||||||
|
strategy: standard
|
||||||
|
algorithmClassName: org.jeecg.modules.test.sharding.algorithm.StandardModTableShardAlgorithm
|
||||||
|
type: CLASS_BASED
|
||||||
|
# 通过operate_type取模的方式确定数据落在哪个库
|
||||||
|
database-inline:
|
||||||
|
type: INLINE
|
||||||
|
props:
|
||||||
|
algorithm-expression: ds$->{operate_type % 2}
|
||||||
|
tables:
|
||||||
|
# 逻辑表名称
|
||||||
|
sys_log:
|
||||||
|
#配置具体表的数据节点
|
||||||
|
actual-data-nodes: ds$->{0..1}.sys_log$->{0..1}
|
||||||
|
# 分库策略
|
||||||
|
database-strategy:
|
||||||
|
standard:
|
||||||
|
sharding-column: operate_type
|
||||||
|
sharding-algorithm-name: database-inline
|
||||||
|
# 分表策略
|
||||||
|
table-strategy:
|
||||||
|
standard:
|
||||||
|
# 分片算法名称
|
||||||
|
sharding-algorithm-name: table-classbased
|
||||||
|
# 分片列名称
|
||||||
|
sharding-column: log_type
|
||||||
Loading…
Reference in new issue