S SmartDocs
系列: Bridget java 28 行 · 更新於 2026-05-08

RateLimitConfig.java

Bridget/payment-gateway-microservices/services/api-gateway/src/main/java/com/checkout/paymentgw/gateway/ratelimit/RateLimitConfig.java

package com.checkout.paymentgw.gateway.ratelimit;

import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import reactor.core.publisher.Mono;

/**
 * Rate-limit key strategy. Prefer {@code X-Merchant-Id} (set by the JWT validator
 * after token verification) and fall back to the remote address for unauthenticated
 * health-check style traffic.
 */
@Configuration
public class RateLimitConfig {

    @Bean
    KeyResolver merchantKeyResolver() {
        return exchange -> {
            String merchantId = exchange.getRequest().getHeaders().getFirst("X-Merchant-Id");
            if (merchantId == null || merchantId.isBlank()) {
                merchantId = exchange.getRequest().getRemoteAddress() != null
                        ? exchange.getRequest().getRemoteAddress().getAddress().getHostAddress()
                        : "anonymous";
            }
            return Mono.just(merchantId);
        };
    }
}

相關文章

Bridget java 更新於 2026-03-30

PaymentGatewayApplication.java

PaymentGatewayApplication.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/PaymentGatewayApplication.java).

閱讀文章 →
Bridget java 更新於 2026-03-20

ApplicationConfiguration.java

ApplicationConfiguration.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/ApplicationConfiguration.java).

閱讀文章 →
Bridget java 更新於 2026-03-30

RequestResponseLogger.java

RequestResponseLogger.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/RequestResponseLogger.java).

閱讀文章 →
Bridget java 更新於 2026-04-14

PaymentGatewayController.java

PaymentGatewayController.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/controller/PaymentGatewayController.java).

閱讀文章 →
Bridget java 更新於 2026-03-20

PaymentStatus.java

PaymentStatus.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/enums/PaymentStatus.java).

閱讀文章 →
Bridget java 更新於 2026-03-29

BankErrorException.java

BankErrorException.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/exception/BankErrorException.java).

閱讀文章 →