【问题标题】:Set a Pub Sub topic in Micronaut as per environment根据环境在 Micronaut 中设置 Pub Sub 主题
【发布时间】:2021-12-13 03:56:09
【问题描述】:

我正在关注此guide 来初始化 GCP Pub/Sub 发布者。

编码语法如下:

@PubSubClient
public interface PubSubService {

    @Topic("topic-a")
    void send(final A a);

    @Topic("topic-b")
    void send(final B b);

}

我想根据环境设置此主题值,因为我将为 QA/DEV 设置不同的主题(例如 topic-a-qatopic-b-qa)。 我有什么方法可以通过或基于环境属性在@Topic 注释中设置此字符串值?

我没有选择在 GCP 帐户下创建一个不同的项目,同时为 QA 创建一个不同的类来覆盖这个在维护环境时并不那么优雅。

【问题讨论】:

    标签: google-cloud-platform google-cloud-pubsub micronaut


    【解决方案1】:

    您可以在 Micronaut 的注解中使用 placeholders

    @PubSubClient
    public interface PubSubService {
    
        @Topic("${topic.a.name:topic-a}")
        void send(final A a);
    
        @Topic("${topic.b.name:topic-b}")
        void send(final B b);
    
    }
    

    表达式 ${topic.a.name:topic-a} 指示 Micronaut 在配置中搜索 topic.a.name 键下的值,如果未找到配置键,则回退到值 topic-a。然后您可以使用例如配置不同的主题名称application-qa.yml配置文件:

    src/main/resources/application-qa.yml

    topic:
      a:
        name: topic-a-qa
      b:
        name: topic-b-qa
    

    最后,请确保当您在 QA 环境中运行应用程序时,您 set a proper active environment,例如

    $ java -Dmicronaut.environments=qa -jar myapp.jar
    

    【讨论】:

    • 感谢完美答案!!!我不确定我们如何或是否可以在注释值中使用应用程序属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 2021-08-26
    • 1970-01-01
    • 2017-09-22
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多