项目反应器/RabbitMQ:分散/聚集
目前,我们有一个RabbitMQ实现,其中多个使用者在返回之前侦听一个缝合在一起的事件。 在T时间内对N个预期响应的呼吁有三个基本结果:项目反应器/RabbitMQ:分散/聚集,rabbitmq,project-reactor,spring-rabbit,Rabbitmq,Project Reactor,Spring Rabbit,目前,我们有一个RabbitMQ实现,其中多个使用者在返回之前侦听一个缝合在一起的事件。 在T时间内对N个预期响应的呼吁有三个基本结果: 我们在T下得到N个响应 我们在T之后得到少于N个响应 我们在T之后得到0个响应(冗余,但仍然) 目前,我们有一个普通的Spring引导实现,它使用CountdownLatch(请求)和ConcurrentMap(侦听器),但这开始影响性能。 目前的想法是这样的: public Mono<ResponseDto> request(Mono<
目前的想法是这样的:
public Mono<ResponseDto> request(Mono<RequestDto> mono){
return mono.flatMap(
request -> dispatch( request ).collectList()
.map( responses -> new ResponseDto(...))
);
}
private Flux<R> dispatch( RequestDto request ){
?
}
@RabbitListener(...)
public void heyListen(Message<R> response){
?
}
公共单声道请求(单声道){
返回mono.flatMap(
请求->分派(请求).collectList()
.map(响应->新响应到(…)
);
}
专用流量调度(请求到请求){
?
}
@拉比特侦听器(…)
公共无效heyListen(消息响应){
?
}
我不确定的是适当的限制
带有自定义谓词的选项takeUntil
带倒计时闩锁-否手柄
有什么建议吗?