1

我正在尝试使用 env var 在种子堆栈上配置 kafka。该语法适用于 mongoDB 配置,但不适用于 kafka 配置。

这是我的mongo conf:

env:
  MONGO_URL: "localhost:27017"
  MONGO_CREDENTIAL: ""

mongoDb:
  clients:
    mongoClient:
      databases: mongoDB
      uri: mongodb://${env.MONGO_CREDENTIAL}${env.MONGO_URL}

这是我的 mongo 卡夫卡

env:
  MONGO_URL: "localhost:27017"
  MONGO_CREDENTIAL: ""

kafka:
  consumers:
    consumer1:
      topics: [topic1]
      properties:
        bootstrap.servers: ${env.KAFKA_URL}
        key.deserializer: org.apache.kafka.common.serialization.StringDeserializer
        value.deserializer: org.apache.kafka.connect.json.JsonDeserializer
        auto.offset.reset: earliest

似乎环境 var 替换不适用于 va 在properties:下。

关于如何使其工作的任何想法?

4

1 回答 1

2

在测试了这个案例之后,我发现属性映射器没有正确调用值评估器。结果,未评估宏。

我发布了 3.1.4 版的配置库来解决这个问题。它将包含在 SeedStack 的未来版本中,但您现在可以通过在导入后添加此依赖管理pom.xml来从中受益seedstack-bom

<dependencyManagement>
    <dependencies>

        <!-- seedstack-bom import is here -->

        <dependency>
            <groupId>org.seedstack.coffig</groupId>
            <artifactId>coffig</artifactId>
            <version>3.1.4</version>
        </dependency>
    </dependencies>
</dependencyManagement>

作为旁注,我建议您不要在env子树中手动定义任何内容,而是使用宏回退机制:

${env.SOME_VAR:'defaultValue'}

请注意,您可以级联回退:

${env.SOME_VAR:sys.someSystemProperty:'defaultValue'}

您需要引用文字默认值以避免它被解析为配置节点。

于 2018-12-18T18:36:24.500 回答