
org.reactivecommons.async.commons.reply.ReactiveReplyRouter Maven / Gradle / Ivy
package org.reactivecommons.async.commons.reply;
import org.reactivecommons.async.commons.communications.Message;
import reactor.core.publisher.Mono;
import reactor.core.publisher.Sinks;
import java.util.concurrent.ConcurrentHashMap;
public class ReactiveReplyRouter {
private final ConcurrentHashMap> processors = new ConcurrentHashMap<>();
public Mono register(String correlationID) {
final Sinks.One processor = Sinks.one();
processors.put(correlationID, processor);
return processor.asMono();
}
public void routeReply(String correlationID, Message data) {
final Sinks.One processor = processors.remove(correlationID);
if (processor != null) {
processor.tryEmitValue(data);
}
}
public void deregister(String correlationID) {
processors.remove(correlationID);
}
public void routeEmpty(String correlationID) {
final Sinks.One processor = processors.remove(correlationID);
if (processor != null) {
processor.tryEmitEmpty();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy