produceMessage加返回值
This commit is contained in:
@@ -31,6 +31,6 @@ public interface ClusterRpcClient<R, P> {
|
|||||||
*
|
*
|
||||||
* @param message 消息体
|
* @param message 消息体
|
||||||
*/
|
*/
|
||||||
public void produceMessage(R message);
|
public CompletableFuture<Void> produceMessage(R message);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,11 +68,11 @@ public class HttpClusterRpcClient extends HttpRpcClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
|
public CompletableFuture<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
|
||||||
if (topicServletMap.computeIfAbsent(topic, t -> localClient.findHttpServlet(t) != null)) {
|
if (topicServletMap.computeIfAbsent(topic, t -> localClient.findHttpServlet(t) != null)) {
|
||||||
localClient.produceMessage(topic, userid, groupid, request);
|
return localClient.produceMessage(topic, userid, groupid, request);
|
||||||
} else {
|
} else {
|
||||||
httpAsync(true, userid, request);
|
return httpAsync(true, userid, request).thenApply(v -> null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -160,7 +160,11 @@ public class HttpClusterRpcClient extends HttpRpcClient {
|
|||||||
InetSocketAddress addr = it.next();
|
InetSocketAddress addr = it.next();
|
||||||
String url = "http://" + addr.getHostString() + ":" + addr.getPort() + requesturi;
|
String url = "http://" + addr.getHostString() + ":" + addr.getPort() + requesturi;
|
||||||
if (finest) {
|
if (finest) {
|
||||||
logger.log(Level.FINEST, "forEachCollectionFuture: url=" + url + ", headers=" + clientHeaders);
|
if (clientBody != null) {
|
||||||
|
logger.log(Level.FINEST, "forEachCollectionFuture: url=" + url + ", body=" + new String(clientBody, StandardCharsets.UTF_8) + ", headers=" + clientHeaders);
|
||||||
|
} else {
|
||||||
|
logger.log(Level.FINEST, "forEachCollectionFuture: url=" + url + ", headers=" + clientHeaders);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (httpSimpleClient != null) {
|
if (httpSimpleClient != null) {
|
||||||
return httpSimpleClient.postAsync(url, clientHeaders, clientBody);
|
return httpSimpleClient.postAsync(url, clientHeaders, clientBody);
|
||||||
|
|||||||
@@ -104,9 +104,9 @@ public class HttpLocalRpcClient extends HttpRpcClient {
|
|||||||
if (isEmpty(request.getTraceid())) {
|
if (isEmpty(request.getTraceid())) {
|
||||||
request.setTraceid(Traces.currentTraceid());
|
request.setTraceid(Traces.currentTraceid());
|
||||||
}
|
}
|
||||||
|
CompletableFuture future = new CompletableFuture();
|
||||||
String topic = generateHttpReqTopic(request, request.getPath());
|
String topic = generateHttpReqTopic(request, request.getPath());
|
||||||
HttpServlet servlet = findHttpServlet(topic);
|
HttpServlet servlet = findHttpServlet(topic);
|
||||||
CompletableFuture future = new CompletableFuture();
|
|
||||||
if (servlet == null) {
|
if (servlet == null) {
|
||||||
if (logger.isLoggable(Level.FINE)) {
|
if (logger.isLoggable(Level.FINE)) {
|
||||||
logger.log(Level.FINE, "sendMessage: request=" + request + ", not found servlet");
|
logger.log(Level.FINE, "sendMessage: request=" + request + ", not found servlet");
|
||||||
@@ -129,15 +129,16 @@ public class HttpLocalRpcClient extends HttpRpcClient {
|
|||||||
if (isEmpty(request.getTraceid())) {
|
if (isEmpty(request.getTraceid())) {
|
||||||
request.setTraceid(Traces.currentTraceid());
|
request.setTraceid(Traces.currentTraceid());
|
||||||
}
|
}
|
||||||
|
CompletableFuture future = new CompletableFuture();
|
||||||
HttpServlet servlet = findHttpServlet(topic);
|
HttpServlet servlet = findHttpServlet(topic);
|
||||||
if (servlet == null) {
|
if (servlet == null) {
|
||||||
if (logger.isLoggable(Level.FINE)) {
|
if (logger.isLoggable(Level.FINE)) {
|
||||||
logger.log(Level.FINE, "sendMessage: request=" + request + ", not found servlet");
|
logger.log(Level.FINE, "sendMessage: request=" + request + ", not found servlet");
|
||||||
}
|
}
|
||||||
return CompletableFuture.completedFuture(new HttpResult().status(404));
|
future.complete(new HttpResult().status(404));
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
HttpRequest req = new HttpMessageLocalRequest(context(), request, userid);
|
HttpRequest req = new HttpMessageLocalRequest(context(), request, userid);
|
||||||
CompletableFuture future = new CompletableFuture();
|
|
||||||
HttpResponse resp = new HttpMessageLocalResponse(req, future);
|
HttpResponse resp = new HttpMessageLocalResponse(req, future);
|
||||||
try {
|
try {
|
||||||
servlet.execute(req, resp);
|
servlet.execute(req, resp);
|
||||||
@@ -161,14 +162,16 @@ public class HttpLocalRpcClient extends HttpRpcClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
|
public CompletableFuture<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
|
||||||
|
CompletableFuture future = new CompletableFuture();
|
||||||
HttpDispatcherServlet ps = dispatcherServlet();
|
HttpDispatcherServlet ps = dispatcherServlet();
|
||||||
HttpServlet servlet = ps.findServletByTopic(topic);
|
HttpServlet servlet = ps.findServletByTopic(topic);
|
||||||
if (servlet == null) {
|
if (servlet == null) {
|
||||||
if (logger.isLoggable(Level.FINE)) {
|
if (logger.isLoggable(Level.FINE)) {
|
||||||
logger.log(Level.FINE, "produceMessage: request=" + request + ", not found servlet");
|
logger.log(Level.FINE, "produceMessage: request=" + request + ", not found servlet");
|
||||||
}
|
}
|
||||||
return;
|
future.completeExceptionally(new RuntimeException("404 Not Found " + topic));
|
||||||
|
return future;
|
||||||
}
|
}
|
||||||
HttpRequest req = new HttpMessageLocalRequest(context(), request, userid);
|
HttpRequest req = new HttpMessageLocalRequest(context(), request, userid);
|
||||||
HttpResponse resp = new HttpMessageLocalResponse(req, null);
|
HttpResponse resp = new HttpMessageLocalResponse(req, null);
|
||||||
@@ -177,6 +180,10 @@ public class HttpLocalRpcClient extends HttpRpcClient {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RedkaleException(e);
|
throw new RedkaleException(e);
|
||||||
}
|
}
|
||||||
|
return future.thenApply(rs -> {
|
||||||
|
Traces.currentTraceid(request.getTraceid());
|
||||||
|
return null;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class HttpMessageLocalRequest extends HttpRequest {
|
public static class HttpMessageLocalRequest extends HttpRequest {
|
||||||
|
|||||||
@@ -26,20 +26,20 @@ import org.redkale.util.RedkaleException;
|
|||||||
public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleRequest, HttpResult<byte[]>> {
|
public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleRequest, HttpResult<byte[]>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void produceMessage(HttpSimpleRequest request) {
|
public final CompletableFuture<Void> produceMessage(HttpSimpleRequest request) {
|
||||||
produceMessage(generateHttpReqTopic(request, null), 0, null, request);
|
return produceMessage(generateHttpReqTopic(request, null), 0, null, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void produceMessage(Serializable userid, HttpSimpleRequest request) {
|
public final CompletableFuture<Void> produceMessage(Serializable userid, HttpSimpleRequest request) {
|
||||||
produceMessage(generateHttpReqTopic(request, null), userid, null, request);
|
return produceMessage(generateHttpReqTopic(request, null), userid, null, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void produceMessage(Serializable userid, String groupid, HttpSimpleRequest request) {
|
public final CompletableFuture<Void> produceMessage(Serializable userid, String groupid, HttpSimpleRequest request) {
|
||||||
produceMessage(generateHttpReqTopic(request, null), userid, groupid, request);
|
return produceMessage(generateHttpReqTopic(request, null), userid, groupid, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public final void produceMessage(String topic, HttpSimpleRequest request) {
|
public final CompletableFuture<Void> produceMessage(String topic, HttpSimpleRequest request) {
|
||||||
produceMessage(topic, 0, null, request);
|
return produceMessage(topic, 0, null, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -119,7 +119,7 @@ public abstract class HttpRpcClient implements ClusterRpcClient<HttpSimpleReques
|
|||||||
|
|
||||||
public abstract CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request);
|
public abstract CompletableFuture<HttpResult<byte[]>> sendMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request);
|
||||||
|
|
||||||
public abstract void produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request);
|
public abstract CompletableFuture<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request);
|
||||||
|
|
||||||
protected abstract int getNodeid();
|
protected abstract int getNodeid();
|
||||||
|
|
||||||
|
|||||||
@@ -35,10 +35,10 @@ final class HttpRpcMessageClient extends HttpRpcClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
|
public CompletableFuture<Void> produceMessage(String topic, Serializable userid, String groupid, HttpSimpleRequest request) {
|
||||||
MessageRecord message = messageClient.createMessageRecord(CTYPE_HTTP_REQUEST, topic, null, request.getTraceid(), requestCoder.encode(request));
|
MessageRecord message = messageClient.createMessageRecord(CTYPE_HTTP_REQUEST, topic, null, request.getTraceid(), requestCoder.encode(request));
|
||||||
message.userid(userid).groupid(groupid);
|
message.userid(userid).groupid(groupid);
|
||||||
messageClient.produceMessage(message);
|
return messageClient.produceMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ public class MessageClient implements ClusterRpcClient<MessageRecord, MessageRec
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void produceMessage(MessageRecord message) {
|
public CompletableFuture<Void> produceMessage(MessageRecord message) {
|
||||||
messageAgent.getMessageClientProducer().apply(message);
|
return messageAgent.getMessageClientProducer().apply(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user