根据环境在 Micronaut 中设置 Pub Sub 主题
Set a Pub Sub topic in Micronaut as per environment
我正在关注此 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 帐户下有一个不同的项目,也创建一个不同的 class 用于 QA 覆盖这个在维护环境时不是那么优雅。
您可以在 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
我正在关注此 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 帐户下有一个不同的项目,也创建一个不同的 class 用于 QA 覆盖这个在维护环境时不是那么优雅。
您可以在 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