
org.reactivecommons.async.starter.senders.GenericDirectAsyncGateway Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of async-commons-starter Show documentation
Show all versions of async-commons-starter Show documentation
Abstract your broker with semantic async messages
package org.reactivecommons.async.starter.senders;
import io.cloudevents.CloudEvent;
import lombok.AllArgsConstructor;
import org.reactivecommons.api.domain.Command;
import org.reactivecommons.async.api.AsyncQuery;
import org.reactivecommons.async.api.DirectAsyncGateway;
import org.reactivecommons.async.api.From;
import reactor.core.publisher.Mono;
import java.util.concurrent.ConcurrentMap;
import static org.reactivecommons.async.api.HandlerRegistry.DEFAULT_DOMAIN;
@AllArgsConstructor
public class GenericDirectAsyncGateway implements DirectAsyncGateway {
private final ConcurrentMap directAsyncGateways;
@Override
public Mono sendCommand(Command command, String targetName) {
return sendCommand(command, targetName, DEFAULT_DOMAIN);
}
@Override
public Mono sendCommand(Command command, String targetName, long delayMillis) {
return sendCommand(command, targetName, delayMillis, DEFAULT_DOMAIN);
}
@Override
public Mono sendCommand(Command command, String targetName, String domain) {
return directAsyncGateways.get(domain).sendCommand(command, targetName);
}
@Override
public Mono sendCommand(Command command, String targetName, long delayMillis, String domain) {
return directAsyncGateways.get(domain).sendCommand(command, targetName, delayMillis);
}
@Override
public Mono sendCommand(CloudEvent command, String targetName) {
return sendCommand(command, targetName, DEFAULT_DOMAIN);
}
@Override
public Mono sendCommand(CloudEvent command, String targetName, long delayMillis) {
return sendCommand(command, targetName, delayMillis, DEFAULT_DOMAIN);
}
@Override
public Mono sendCommand(CloudEvent command, String targetName, String domain) {
return directAsyncGateways.get(domain).sendCommand(command, targetName);
}
@Override
public Mono sendCommand(CloudEvent command, String targetName, long delayMillis, String domain) {
return directAsyncGateways.get(domain).sendCommand(command, targetName, delayMillis);
}
@Override
public Mono requestReply(AsyncQuery query, String targetName, Class type) {
return requestReply(query, targetName, type, DEFAULT_DOMAIN);
}
@Override
public Mono requestReply(AsyncQuery query, String targetName, Class type, String domain) {
return directAsyncGateways.get(domain).requestReply(query, targetName, type);
}
@Override
public Mono requestReply(CloudEvent query, String targetName, Class type) {
return requestReply(query, targetName, type, DEFAULT_DOMAIN);
}
@Override
public Mono requestReply(CloudEvent query, String targetName, Class type, String domain) {
return directAsyncGateways.get(domain).requestReply(query, targetName, type);
}
@Override
public Mono reply(T response, From from) {
return directAsyncGateways.get(DEFAULT_DOMAIN).reply(response, from);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy