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
相关产品推荐
相关产品推荐

