This commit is contained in:
@@ -78,11 +78,12 @@ public class HttpMessageProcessor implements MessageProcessor {
|
||||
}
|
||||
|
||||
private void execute(final MessageRecord message, final Runnable callback) {
|
||||
HttpMessageRequest request = null;
|
||||
try {
|
||||
if (finest) logger.log(Level.FINEST, "HttpMessageProcessor.process message: " + message);
|
||||
if (multiconsumer) message.setResptopic(null); //不容许有响应
|
||||
HttpContext context = server.getHttpServer().getContext();
|
||||
HttpMessageRequest request = new HttpMessageRequest(context, message);
|
||||
request = new HttpMessageRequest(context, message);
|
||||
if (multiconsumer) {
|
||||
request.setRequestURI(request.getRequestURI().replaceFirst(this.multimodule, this.restmodule));
|
||||
}
|
||||
@@ -90,7 +91,8 @@ public class HttpMessageProcessor implements MessageProcessor {
|
||||
servlet.execute(request, response);
|
||||
} catch (Throwable ex) {
|
||||
if (message.getResptopic() != null && !message.getResptopic().isEmpty()) {
|
||||
HttpMessageResponse.finishHttpResult(finest, message, callback, producer.getProducer(message), message.getResptopic(), new HttpResult().status(500));
|
||||
HttpMessageResponse.finishHttpResult(finest, request == null ? null : request.getRespConvert(),
|
||||
message, callback, producer.getProducer(message), message.getResptopic(), new HttpResult().status(500));
|
||||
}
|
||||
logger.log(Level.SEVERE, HttpMessageProcessor.class.getSimpleName() + " process error, message=" + message, ex instanceof CompletionException ? ((CompletionException) ex).getCause() : ex);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
package org.redkale.mq;
|
||||
|
||||
import org.redkale.convert.Convert;
|
||||
import org.redkale.net.http.*;
|
||||
|
||||
/**
|
||||
@@ -30,4 +31,8 @@ public class HttpMessageRequest extends HttpRequest {
|
||||
this.requestURI = uri;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Convert getRespConvert() {
|
||||
return this.respConvert;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,10 +51,10 @@ public class HttpMessageResponse extends HttpResponse {
|
||||
}
|
||||
|
||||
public void finishHttpResult(HttpResult result) {
|
||||
finishHttpResult(this.finest, this.message, this.callback, this.producer, message.getResptopic(), result);
|
||||
finishHttpResult(this.finest, ((HttpMessageRequest) this.request).getRespConvert(), this.message, this.callback, this.producer, message.getResptopic(), result);
|
||||
}
|
||||
|
||||
public static void finishHttpResult(boolean finest, MessageRecord msg, Runnable callback, MessageProducer producer, String resptopic, HttpResult result) {
|
||||
public static void finishHttpResult(boolean finest, Convert respConvert, MessageRecord msg, Runnable callback, MessageProducer producer, String resptopic, HttpResult result) {
|
||||
if (callback != null) callback.run();
|
||||
if (resptopic == null || resptopic.isEmpty()) return;
|
||||
if (result.getResult() instanceof RetResult) {
|
||||
@@ -62,6 +62,7 @@ public class HttpMessageResponse extends HttpResponse {
|
||||
//必须要塞入retcode, 开发者可以无需反序列化ret便可确定操作是否返回成功
|
||||
if (!ret.isSuccess()) result.header("retcode", String.valueOf(ret.getRetcode()));
|
||||
}
|
||||
if (result.convert() == null && respConvert != null) result.convert(respConvert);
|
||||
if (finest) {
|
||||
Object innerrs = result.getResult();
|
||||
if (innerrs instanceof byte[]) innerrs = new String((byte[]) innerrs, StandardCharsets.UTF_8);
|
||||
|
||||
@@ -616,6 +616,9 @@ public class HttpRequest extends Request<HttpContext> {
|
||||
public String toString() {
|
||||
parseBody();
|
||||
return this.getClass().getSimpleName() + "{\r\n method: " + this.method + ", \r\n requestURI: " + this.requestURI
|
||||
+ (this.frombody ? (", \r\n frombody: " + this.frombody) : "")
|
||||
+ (this.reqConvert != null ? (", \r\n reqConvert: " + this.reqConvert.getClass().getSimpleName()) : "")
|
||||
+ (this.respConvert != null ? (", \r\n respConvert: " + this.respConvert.getClass().getSimpleName()) : "")
|
||||
+ ", \r\n remoteAddr: " + this.getRemoteAddr() + ", \r\n cookies: " + this.cookie + ", \r\n contentType: " + this.contentType
|
||||
+ ", \r\n connection: " + this.connection + ", \r\n protocol: " + this.protocol + ", \r\n host: " + this.host
|
||||
+ ", \r\n contentLength: " + this.contentLength + ", \r\n bodyLength: " + this.array.size() + (this.boundary || this.array.isEmpty() ? "" : (", \r\n bodyContent: " + this.getBodyUTF8()))
|
||||
|
||||
Reference in New Issue
Block a user