Java 当前一个发布服务器失败或损坏时,如何切换到新发布服务器?
假设有三个实体:Java 当前一个发布服务器失败或损坏时,如何切换到新发布服务器?,java,spring-webflux,project-reactor,Java,Spring Webflux,Project Reactor,假设有三个实体: Mono供应商-供应商价值来源出版商 价值来源-价值发布者 值(其性质不重要,即字符串) 目的是: 从供应商处获取下一个来源 创建从源检索值的发布服务器 对于每个响应,返回当前值 如果当前源无法生成下一个值(抛出错误或返回Mono.error),请转至步骤(1) 当上一个值源失败时,切换到新值源的正确方法是什么? 类值服务{ 私人价值来源; 私人独资企业; NumberGeneratorsServiceImpl(供应商来源供应商){ var currentSource=s
-供应商价值来源出版商Mono供应商
-价值发布者价值来源
- 值(其性质不重要,即
)字符串
值源失败时,切换到新值源的正确方法是什么?
类值服务{
私人价值来源;
私人独资企业;
NumberGeneratorsServiceImpl(供应商来源供应商){
var currentSource=sourcesApplication.get();
this.valuesPublisher=Mono.defer(()->source.flatMap(s->s.makeNextValue());
}
@凌驾
公共Mono nextValue(){
//如何检测publisher是否未能发布值
//并使用SourcesApplication.get()中的新源创建一个新的发布服务器
返回值spublisher;
}
}
很难准确地说出您想要做什么,但如果我理解正确,并且您希望从供应商处获得,您可以使用
将ValueSource替换为String,因为问题中不清楚您想用它做什么,但它不会影响逻辑
class ValuesService{
private Mono<String> valuesPublisher;
ValuesService(Supplier<Mono<String>> sourcesSupplier) {
this.valuesPublisher =
//Every subscription calls get on supplier
Mono.defer(sourcesSupplier)
//Retry when error, resubsribes each time
.retry();
}
Mono<String> getValuesPublisher(){
return valuesPublisher;
}
}
类值服务{
私人独资企业;
价值服务(供应商来源供应商){
这是我的价值观=
//每次订购电话都会打到供应商身上
Mono.defer(sourcesSupplier)
//出现错误时重试,每次重新订阅
.重试();
}
Mono getValuesPublisher(){
返回值spublisher;
}
}
什么是ValueSource
?为什么默认构造函数的名称与类不同?currentSource在哪里使用?这在目前没有多大意义(至少对我来说)。你能发布一个导致你想要恢复的错误的消息吗?
class ValuesService{
private Mono<String> valuesPublisher;
ValuesService(Supplier<Mono<String>> sourcesSupplier) {
this.valuesPublisher =
//Every subscription calls get on supplier
Mono.defer(sourcesSupplier)
//Retry when error, resubsribes each time
.retry();
}
Mono<String> getValuesPublisher(){
return valuesPublisher;
}
}