You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Pulsar 0.2.0生产者缓存属性修改方法咨询(无setCache方法)

Spring Pulsar 0.2.0 生产者缓存属性配置方案

在Spring Pulsar 0.2.0版本中,ProducerConfigProperties确实未提供直接配置生产者缓存的setter方法,你可以通过以下两种方式实现缓存属性的修改:

方式一:自定义ProducerCustomizer手动配置

通过实现ProducerCustomizer接口,直接操作Pulsar原生的ProducerBuilder来设置缓存参数,代码示例如下:

import org.apache.pulsar.client.api.ProducerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.pulsar.core.ProducerCustomizer;

@Configuration
public class PulsarProducerConfig {

    @Bean
    public ProducerCustomizer<Object> producerCacheCustomizer() {
        return (builder, topic) -> {
            // 设置缓存过期时间(单位:秒)
            builder.cacheExpireAfterAccess(600);
            // 设置缓存最大容量
            builder.cacheMaximumSize(1000);
            // 设置缓存初始容量
            builder.cacheInitialCapacity(5);
        };
    }
}

方式二:结合配置文件绑定实现动态配置

如果希望继续通过application.properties中的配置项来控制缓存参数,可以借助@ConfigurationProperties绑定配置,再注入到自定义的ProducerCustomizer中:

1. 创建配置类绑定缓存参数

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "spring.pulsar.producer.cache")
public class PulsarProducerCacheProperties {
    private long expireAfterAccess;
    private int maximumSize;
    private int initialCapacity;

    // 生成getter和setter方法
    public long getExpireAfterAccess() {
        return expireAfterAccess;
    }

    public void setExpireAfterAccess(long expireAfterAccess) {
        this.expireAfterAccess = expireAfterAccess;
    }

    public int getMaximumSize() {
        return maximumSize;
    }

    public void setMaximumSize(int maximumSize) {
        this.maximumSize = maximumSize;
    }

    public int getInitialCapacity() {
        return initialCapacity;
    }

    public void setInitialCapacity(int initialCapacity) {
        this.initialCapacity = initialCapacity;
    }
}

2. 启用配置绑定并自定义ProducerCustomizer

import org.apache.pulsar.client.api.ProducerBuilder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.pulsar.core.ProducerCustomizer;

@Configuration
@EnableConfigurationProperties(PulsarProducerCacheProperties.class)
public class PulsarProducerConfig {

    @Bean
    public ProducerCustomizer<Object> producerCacheCustomizer(PulsarProducerCacheProperties cacheProperties) {
        return (builder, topic) -> {
            builder.cacheExpireAfterAccess(cacheProperties.getExpireAfterAccess());
            builder.cacheMaximumSize(cacheProperties.getMaximumSize());
            builder.cacheInitialCapacity(cacheProperties.getInitialCapacity());
        };
    }
}

这样你就可以继续使用原来的application.properties配置项来控制生产者缓存属性了。

内容的提问来源于stack exchange,提问作者DeveloperV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 18:05:06