根据环境在 Micronaut 中设置 Pub Sub 主题
Posted
技术标签:
【中文标题】根据环境在 Micronaut 中设置 Pub Sub 主题【英文标题】:Set a Pub Sub topic in Micronaut as per environment 【发布时间】: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-qa
和 topic-b-qa
)。
我有什么方法可以通过或基于环境属性在@Topic
注释中设置此字符串值?
我没有选择在 GCP 帐户下创建一个不同的项目,同时为 QA 创建一个不同的类来覆盖这个在维护环境时并不那么优雅。
【问题讨论】:
【参考方案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
【讨论】:
感谢完美答案!!!我不确定我们如何或是否可以在注释值中使用应用程序属性。以上是关于根据环境在 Micronaut 中设置 Pub Sub 主题的主要内容,如果未能解决你的问题,请参考以下文章
如何在 NestJS 中设置类似 Angular 的配置环境文件?
如何在postman collection runner中设置环境变量?