feat:机器人消息模板接口联调

This commit is contained in:
zuoqinbo 2023-10-18 11:47:58 +08:00
parent 0249958a1a
commit a036f6869c
6 changed files with 153 additions and 4 deletions

View File

@ -21,7 +21,7 @@ import java.util.List;
* @date 2023/10/9 16:01
*/
@FeignClient(name = "im-center", url = "${axzo.service.im-center:http://im:8080}")
@FeignClient(name = "im-center", url = "${axzo.service.im-center:http://im-center:8080}")
public interface AccountApi {
/**

View File

@ -1,2 +1,2 @@
#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
#cn.axzo.im.center.api.config.MaoKaiApiAutoConfiguration
#cn.axzo.im.center.api.cn.axzo.im.config.MaoKaiApiAutoConfiguration

View File

@ -1,2 +1,2 @@
#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
#cn.axzo.im.center.api.config.MaoKaiApiAutoConfiguration
#cn.axzo.im.center.api.cn.axzo.im.config.MaoKaiApiAutoConfiguration

View File

@ -0,0 +1,104 @@
package cn.axzo.im.config;
import cn.hutool.core.util.ReflectUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import feign.Target.HardCodedTarget;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.EnvironmentAware;
import org.springframework.context.annotation.Profile;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Objects;
/**
* FeignConfig配置
*
* @author zuoqinbo
* @version V1.0
* @date 2023/10/18 10:52
*/
@Component
@Slf4j
@Profile({"dev", "test", "local"})
public class FeignConfig implements RequestInterceptor, EnvironmentAware {
private Environment environment;
@Value("${maokaiEnvUrl:http://dev-app.axzo.cn/maokai}")
private String maokaiEnvUrl;
@Value("${apolloEnvUrl:http://dev-app.axzo.cn/apollo}")
private String apolloEnvUrl;
@Value("${mnsEnvUrl:http://dev-app.axzo.cn/mns}")
private String mnsEnvUrl;
@Value("${pudgeEnvUrl:http://dev-app.axzo.cn/pudge}")
private String pudgeEnvUrl;
@Value("${outmanEnvUrl:http://dev-app.axzo.cn/outman}")
private String outmanEnvUrl;
@Value("${thronesEnvUrl:http://dev-app.axzo.cn/thrones}")
private String thronesEnvUrl;
@Value("${workspaceEnvUrl:http://dev-app.axzo.cn/workspace}")
private String workspaceEnvUrl;
@Value("${thirdPartUrl:http://dev-app.axzo.cn/thirdParty}")
private String thirdPartUrl;
@Value("${nanopartUrl:http://dev-app.axzo.cn/nanopart}")
private String nanopartUrl;
@Value("${tyrEnvUrl:http://dev-app.axzo.cn/tyr}")
private String tyrEnvUrl;
@Value("${msgCenterEnvUrl:http://dev-app.axzo.cn/msg-center}")
private String msgCenterEnvUrl;
@Value("${imCenterEnvUrl:http://dev-app.axzo.cn/im-center}")
private String imCenterEnvUrl;
private static String POD_NAMESPACE;
static {
Map<String, String> env = System.getenv();
if (env != null) {
POD_NAMESPACE = env.get("MY_POD_NAMESPACE");
}
log.info("init FeignConfig, POD_NAMESPACE value is {}", POD_NAMESPACE);
}
@SneakyThrows
@Override
public void apply(RequestTemplate requestTemplate) {
if (POD_NAMESPACE == null) {
HardCodedTarget target = (HardCodedTarget) requestTemplate.feignTarget();
String url = requestTemplate.feignTarget().url();
// 如需修改微服务地址,建议通过外部化参数来调整
url = url.replace("http://maokai:8080", maokaiEnvUrl);
url = url.replace("http://apollo:11000", apolloEnvUrl);
url = url.replace("http://mns:8989", mnsEnvUrl);
url = url.replace("http://pudge:10099", pudgeEnvUrl);
url = url.replace("http://outman:8989", outmanEnvUrl);
url = url.replace("http://thrones", thronesEnvUrl);
url = url.replace("http://workspace:8080", workspaceEnvUrl);
url = url.replace("http://third-party:11000", thirdPartUrl);
url = url.replace("http://nanopart:8080", nanopartUrl);
url = url.replace("http://tyr:8080", tyrEnvUrl);
url = url.replace("http://msg-center:8080", msgCenterEnvUrl);
url = url.replace("http://im-center:8080", imCenterEnvUrl);
String profile = environment.getProperty("spring.profiles.active");
if(Objects.equals(profile, "test") && url.contains("dev-app.axzo.cn")) {
url = url.replace("dev-app", "test-api");
}
requestTemplate.target(url);
Field field = ReflectUtil.getField(target.getClass(), "url");
field.setAccessible(true);
field.set(target, url);
}
}
/**
* Set the {@code Environment} that this component runs in.
*
* @param environment
*/
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
}

View File

@ -0,0 +1,45 @@
package cn.axzo.im.config;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import static cn.axzo.im.config.GlobalConfig.FeignClientConstant.*;
/**
* @author tanjie@axzo.cn
* @date 2023/7/5 16:08
*/
@Configuration
@EnableFeignClients(basePackages = {
MSG_CENTER
})
public class GlobalConfig {
/**
* 第三方Feign
*/
public class FeignClientConstant {
public static final String MSG_CENTER = "cn.axzo.msg.center.service";
}
/**
* pod 容器中, 实际 coreSize = 1,所以在此线程池中,coreSize=2,maxCoreSize=4,
*
* @return
*/
@Bean
public ExecutorService controllerExecutor() {
int coreSize = Runtime.getRuntime()
.availableProcessors() == 1 ? Runtime.getRuntime().availableProcessors() * 4
: Runtime.getRuntime().availableProcessors();
ThreadPoolExecutor executor = new ThreadPoolExecutor(coreSize, coreSize * 2, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(1 << 8), r -> new Thread(r, "YOKE-CONTROLLER-EXECUTOR"));
executor.prestartCoreThread();
return executor;
}
}

View File

@ -44,7 +44,7 @@ public class XxlJobConfig {
@Bean
@NonLocalEnvironment
public XxlJobSpringExecutor xxlJobExecutor() {
log.info("----axzo im-center service xxl-job config init---");
log.info("----axzo im-center service xxl-job cn.axzo.im.config init---");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
xxlJobSpringExecutor.setAppname(appName);