Merge branch 'eugenp:master' into master

This commit is contained in:
edizor
2022-12-15 15:42:03 +08:00
committed by GitHub
254 changed files with 3139 additions and 810 deletions
@@ -16,12 +16,12 @@
</parent>
<modules>
<module>additional-sources-simple</module>
<module>basic-config</module>
<module>dynamodb-config</module>
<module>extra-configs</module>
<module>jdbc-config</module>
<module>zookeeper-config</module>
<module>spring-cloud-archaius-additionalsources</module>
<module>spring-cloud-archaius-basic-config</module>
<module>spring-cloud-archaius-dynamodb-config</module>
<module>spring-cloud-archaius-extra-configs</module>
<module>spring-cloud-archaius-jdbc-config</module>
<module>spring-cloud-archaius-zookeeper-config</module>
</modules>
<dependencyManagement>
@@ -3,9 +3,9 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>basic-config</artifactId>
<artifactId>spring-cloud-archaius-additional-sources-simple</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>basic-config</name>
<name>spring-cloud-archaius-additionalsources</name>
<packaging>jar</packaging>
<parent>
@@ -3,9 +3,9 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>additional-sources-simple</artifactId>
<artifactId>spring-cloud-archaius-basic-config</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>additional-sources-simple</name>
<name>spring-cloud-archaius-basic-config</name>
<packaging>jar</packaging>
<parent>
@@ -3,8 +3,8 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>dynamodb-config</artifactId>
<name>dynamodb-config</name>
<artifactId>spring-cloud-archaius-dynamodb-config</artifactId>
<name>spring-cloud-archaius-dynamodb-config</name>
<packaging>jar</packaging>
<parent>
@@ -3,9 +3,9 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>extra-configs</artifactId>
<artifactId>spring-cloud-archaius-extra-configs</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>extra-configs</name>
<name>spring-cloud-archaius-extra-configs</name>
<packaging>jar</packaging>
<parent>
@@ -3,8 +3,8 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>jdbc-config</artifactId>
<name>jdbc-config</name>
<artifactId>spring-cloud-archaius-jdbc-config</artifactId>
<name>spring-cloud-archaius-jdbc-config</name>
<packaging>jar</packaging>
<parent>
@@ -3,8 +3,8 @@
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>zookeeper-config</artifactId>
<name>zookeeper-config</name>
<artifactId>spring-cloud-archaius-zookeeper-config</artifactId>
<name>spring-cloud-archaius-zookeeper-config</name>
<packaging>jar</packaging>
<parent>
@@ -13,8 +13,8 @@
</parent>
<modules>
<module>gateway</module>
<module>greeting</module>
<module>spring-cloud-dapr-gateway</module>
<module>spring-cloud-dapr-greeting</module>
</modules>
</project>
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung.spring.cloud.spring-cloud-dapr</groupId>
<artifactId>gateway</artifactId>
<artifactId>spring-cloud-dapr-gateway</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.baeldung.spring.cloud.spring-cloud-dapr</groupId>
<artifactId>greeting</artifactId>
<artifactId>spring-cloud-dapr-greeting</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
@@ -0,0 +1,38 @@
package com.baeldung.springcloudgateway.ipaddress;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;
@SpringBootApplication()
@PropertySource("classpath:ipaddress-application.properties")
public class IpAddressApplication {
public static void main(String[] args) {
SpringApplication.run(IpAddressApplication.class, args);
}
@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
return builder.routes()
.route("requestratelimiter_route", p -> p
.path("/example")
.filters(f -> f.requestRateLimiter(r -> r.setRateLimiter(redisRateLimiter())))
.uri("http://example.org"))
.route("ipaddress_route", p -> p
.path("/example2")
.filters(f -> f.requestRateLimiter(r -> r.setRateLimiter(redisRateLimiter())
.setDenyEmptyKey(false)
.setKeyResolver(new SimpleClientAddressResolver())))
.uri("http://example.org"))
.build();
}
@Bean
public RedisRateLimiter redisRateLimiter() {
return new RedisRateLimiter(1, 1, 1);
}
}
@@ -0,0 +1,21 @@
package com.baeldung.springcloudgateway.ipaddress;
import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.cloud.gateway.support.ipresolver.XForwardedRemoteAddressResolver;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.net.InetSocketAddress;
@Primary
@Component
public class ProxiedClientAddressResolver implements KeyResolver {
@Override
public Mono<String> resolve(ServerWebExchange exchange) {
XForwardedRemoteAddressResolver resolver = XForwardedRemoteAddressResolver.maxTrustedIndex(1);
InetSocketAddress inetSocketAddress = resolver.resolve(exchange);
return Mono.just(inetSocketAddress.getAddress().getHostAddress());
}
}
@@ -0,0 +1,23 @@
package com.baeldung.springcloudgateway.ipaddress;
import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.Optional;
@Component
public class SimpleClientAddressResolver implements KeyResolver {
@Override
public Mono<String> resolve(ServerWebExchange exchange) {
return Optional.ofNullable(exchange.getRequest().getRemoteAddress())
.map(InetSocketAddress::getAddress)
.map(InetAddress::getHostAddress)
.map(Mono::just)
.orElse(Mono.empty());
}
}
@@ -0,0 +1,6 @@
server.port=8081
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=16379
spring.redis.password=mypass
spring.redis.timeout=60000