短连接仓库地址:短连接服务
https://github.com/TheLandscapeBe/tinyurl
#使用方法 1 maven依赖
<dependency>
<groupId>com.github.fofcn.tinyurl</groupId>
<artifactId>tinyurl-client</artifactId>
<version>v2.0.2</version>
</dependency>
2 直接调用客户端
public class TinyUrlClientTest {
private static TinyUrlClientConfig clientConfig;
private static HttpPoolConfig httpPoolConfig;
private static TinyUrlClient tinyUrlClient;
@BeforeClass
public static void beforeClass() {
clientConfig = TinyUrlClientConfig.builder()
.appId("1594708959736")
.key("1594708959736")
.host("http://localhost:80")
.build();
httpPoolConfig = HttpPoolConfig.builder()
.connectTimeout(60000)
.readTimeout(6000)
.maxTotal(100)
.maxPerRoute(100)
.defaultMaxRoute(100)
.build();
tinyUrlClient = new TinyUrlClientImpl(clientConfig, httpPoolConfig);
tinyUrlClient.initialize();
}
@Test
public void testShorten() {
TinyUrlParam tinyUrlParam = new TinyUrlParam();
tinyUrlParam.setDomain("s.xxx.com");
tinyUrlParam.setUrl("https://mvnrepository.com/artifact/org.slf4j/slf4j-api/1.7.30");
TinyUrlObject tinyUrlObject = tinyUrlClient.shorten(tinyUrlParam);
if (ObjectUtil.isNull(tinyUrlObject)) {
Assert.fail();
}
Assert.assertNotNull(tinyUrlObject.getUrl());
System.out.println(tinyUrlObject.getUrl());
}
}
3 在spring boot中使用
3.1 配置RestTemplate
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate createAndConfigRestTemplate() {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setConnectTimeout(60000);
requestFactory.setReadTimeout(6000);
RestTemplate restTemplate = new RestTemplate(requestFactory);
return restTemplate;
}
}
3.2 配置TinyUrl客户端
@Data
@Configuration
@ConfigurationProperties(prefix = "tinyurl")
public class TinyUrlClientConfigurer {
/**
* 域名,多个域名以逗号分割
*/
private String host;
/**
* appid
*/
private String appId;
/**
* app密钥
*/
private String key;
/**
* 连接超时时间
*/
private int connectTimeout = 60 * 1000;
/**
* 读取超时时间
*/
private int readTimeout = 60 * 1000;
/**
* 最大连接数
*/
private int maxTotal = 100;
/**
* 默认最大路由
*/
private int defaultMaxRoute = 100;
/**
* 每个route最大连接数
*/
private int maxPerRoute = 100;
/**
* 重试次数,默认为0
*/
private int retryTimes = 0;
/**
* 链接资源释放周期,默认为1分钟
*/
private int evictInterval = 60 * 1000;
/**
* 默认域名
*/
private String domain;
@Resource
private RestTemplate restTemplate;
@Bean
public TinyUrlClient create() {
TinyUrlClientConfig clientConfig = TinyUrlClientConfig.builder()
.appId(appId)
.key(key)
.host(host)
.restTemplate(restTemplate)
.build();
HttpPoolConfig httpPoolConfig = HttpPoolConfig.builder()
.connectTimeout(connectTimeout)
.readTimeout(readTimeout)
.maxTotal(maxTotal)
.maxPerRoute(maxPerRoute)
.defaultMaxRoute(defaultMaxRoute)
.evictInterval(evictInterval)
.retryTimes(0)
.build();
TinyUrlClient tinyUrlClient = new TinyUrlClientImpl(clientConfig, httpPoolConfig);
tinyUrlClient.initialize();
return tinyUrlClient;
}
}
3.3 调用TinyUrlClient
TinyUrlParam tinyUrlParam = new TinyUrlParam();
tinyUrlParam.setDomain(domain);
tinyUrlParam.setUrl(realUrl);
TinyUrlObject tinyUrlObject = tinyUrlClient.shorten(tinyUrlParam);
System.out.println(tinyUrlObject.getUrl())