我使用自动配置(仅通过注释)运行Spring启动和kafka,并在.yaml文件中定义了道具,即:
spring:
kafka:
bootstrap-servers: someserver:9999
consumer:
group-id: mygroup
....
@KafkaListener()
public void receive(ConsumerRecord<?, ?> consumerRecord) {
....
}
它工作得很好,spring maps即字段group-id正确。
但是当我尝试使用相同的yaml文件手动配置Kafka(使用消费者工厂和消费者配置)时,我遇到了问题。在类中,消费者配置Kafka属性以 命名。在名称中,而不是 _ 即:
public static final String GROUP_ID_CONFIG = "group.id";
所以我不能把它们加载到map中,然后把map传递给ConsumerFactory,因为键是with _ not。
我不想像Spring kafka团队提供的例子那样丑陋,当他们将道具从yaml映射到配置类,然后手动分配地图中的道具以传递给工厂时:
@ConfigurationProperties(prefix = "kafka")
public class ConfigProperties {
private String brokerAddress;
private String topic;
private String fooTopic;
public String getBrokerAddress() {
return this.brokerAddress;
}
.....
@Bean
public ProducerFactory<String, String> producerFactory() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, this.configProperties.getBrokerAddress());
.....
return new DefaultKafkaProducerFactory<>(props);
}
如果您想使用yml文件中的虚线属性,您需要像引导一样对不直接支持作为引导属性的任意属性进行操作:
spring:
kafka:
consumer:
properties:
group.id: foo
即填充属性
属性。
boot为某些属性提供第一类支持的原因是,IDE编辑器可以提供内容辅助,这对于任意属性是不可能的。
在我的项目中有2个资源属性 1.application.properties 2. 应用开发.性能 此类使用开发的值属性 我使用 application-development.properties 作为我的项目资源 因此,我使用以下命令运行该项目: < code > mvn spring-boot:run-D spring . profiles . active = development 但是
我以.jar文件的形式运行一个Spring Boot应用程序,该应用程序的一部分属性来自驻留在jar内部的application.yml,而另一部分属性则来自驻留在jar外部的另一个application.yml。外部的某些属性覆盖内部的属性。为了测试属性是否被正确覆盖,我希望看到当前活动的属性。这是完全可以实现的吗?还是唯一的解决方案是通过属性输出逻辑来扩展我的应用程序?
我的应用程序正在尝试外部化所有项目属性,一些属性将位于我的应用程序中,而另一个属性将位于 Windows 中某处的文件夹中。 我将Spring设置为这样执行:-Spring . config . location = file:///C:\ Temp \ config \ application . properties,class path:application . properties 如您
如何从Cloud Config服务器实例配置基本的Spring Boot属性?显然,与配置服务器相关的Spring boot属性(即cloud.config.uri,*.username,*.password)必须在bootstrap.yml中 下面的其他属性是什么:https://docs.spring.io/spring-boot/docs/current/reference/html/com
应用yml在带有主类和hibernate的模块中: 主要pom: 我的模块pom: 在父项目中: 错误:
如何修复此异常?