我遵循这个指南来初始化一个GCP发布/订阅发布者。
编码语法如下:
@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创建一个不同的类,在维护环境时覆盖这个类并不那么优雅。
你可以在Micronaut的注释中使用占位符。
@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/主/资源/application-qa.yml子>
topic:
a:
name: topic-a-qa
b:
name: topic-b-qa
最后,只要确保当你在QA环境中运行应用程序时,你设置了一个适当的活动环境,例如
$ java -Dmicronaut.environments=qa -jar myapp.jar