From ed1fb151d759644527dcf373d8699b29a9ced758 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Fri, 29 May 2020 16:06:02 +0800 Subject: [PATCH] --- src/org/redkale/boot/NodeServer.java | 26 +++++++++++++----- src/org/redkale/mq/HttpMessageContent.java | 4 +++ src/org/redkale/mq/HttpMessageRequest.java | 4 +++ src/org/redkale/mq/HttpMessageResponse.java | 4 +++ src/org/redkale/mq/MessageAgent.java | 30 +++++++++++++++++++++ src/org/redkale/mq/MessageResponse.java | 4 +++ src/org/redkale/mq/MessageStreams.java | 17 ++++++++++++ src/org/redkale/net/http/Rest.java | 2 +- 8 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 src/org/redkale/mq/MessageStreams.java diff --git a/src/org/redkale/boot/NodeServer.java b/src/org/redkale/boot/NodeServer.java index aad5ecf82..71118d61b 100644 --- a/src/org/redkale/boot/NodeServer.java +++ b/src/org/redkale/boot/NodeServer.java @@ -534,13 +534,24 @@ public abstract class NodeServer { //Service.destroy执行之前调用 protected void preDestroyServices(Set localServices, Set remoteServices) { - final ClusterAgent cluster = application.clusterAgent; - if (cluster == null) return; - NodeProtocol pros = getClass().getAnnotation(NodeProtocol.class); - String protocol = pros.value().toUpperCase(); - if (!cluster.containsProtocol(protocol)) return; - if (!cluster.containsPort(server.getSocketAddress().getPort())) return; - cluster.deregister(this, protocol, localServices, remoteServices); + if (application.clusterAgent != null) { //服务注销 + final ClusterAgent agent = application.clusterAgent; + NodeProtocol pros = getClass().getAnnotation(NodeProtocol.class); + String protocol = pros.value().toUpperCase(); + if (agent.containsProtocol(protocol) && agent.containsPort(server.getSocketAddress().getPort())) { + agent.deregister(this, protocol, localServices, remoteServices); + } + } + if (application.messageAgent != null) { //MQ + + } + } + + //Server.start执行之后调用 + protected void postStartServer(Set localServices, Set remoteServices) { + if (application.messageAgent != null) { //MQ + final MessageAgent agent = application.messageAgent; + } } protected abstract ClassFilter createFilterClassFilter(); @@ -678,6 +689,7 @@ public abstract class NodeServer { public void start() throws IOException { if (interceptor != null) interceptor.preStart(this); server.start(); + postStartServer(localServices, remoteServices); } public void shutdown() throws IOException { diff --git a/src/org/redkale/mq/HttpMessageContent.java b/src/org/redkale/mq/HttpMessageContent.java index 70686e67a..51ced5245 100644 --- a/src/org/redkale/mq/HttpMessageContent.java +++ b/src/org/redkale/mq/HttpMessageContent.java @@ -9,6 +9,10 @@ import java.io.Serializable; import org.redkale.convert.json.JsonConvert; /** + * + * + *

+ * 详情见: https://redkale.org * * @author zhangjx */ diff --git a/src/org/redkale/mq/HttpMessageRequest.java b/src/org/redkale/mq/HttpMessageRequest.java index cbb1d81a3..a2956386e 100644 --- a/src/org/redkale/mq/HttpMessageRequest.java +++ b/src/org/redkale/mq/HttpMessageRequest.java @@ -9,6 +9,10 @@ import java.nio.ByteBuffer; import org.redkale.net.http.*; /** + * + * + *

+ * 详情见: https://redkale.org * * @author zhangjx */ diff --git a/src/org/redkale/mq/HttpMessageResponse.java b/src/org/redkale/mq/HttpMessageResponse.java index a1eb2e181..cb3901599 100644 --- a/src/org/redkale/mq/HttpMessageResponse.java +++ b/src/org/redkale/mq/HttpMessageResponse.java @@ -13,6 +13,10 @@ import org.redkale.net.http.*; import org.redkale.util.ObjectPool; /** + * + * + *

+ * 详情见: https://redkale.org * * @author zhangjx */ diff --git a/src/org/redkale/mq/MessageAgent.java b/src/org/redkale/mq/MessageAgent.java index 07bc00763..a25015616 100644 --- a/src/org/redkale/mq/MessageAgent.java +++ b/src/org/redkale/mq/MessageAgent.java @@ -7,6 +7,9 @@ package org.redkale.mq; import java.util.*; import java.util.logging.Logger; +import org.redkale.boot.*; +import org.redkale.net.http.Rest; +import org.redkale.net.sncp.Sncp; import org.redkale.service.Service; import org.redkale.util.AnyValue; @@ -62,4 +65,31 @@ public abstract class MessageAgent { //查询所有topic public abstract List queryTopic(); + + //格式: sncp:req:user + protected static String generateSncpReqTopic(NodeServer ns, Service service) { + String resname = Sncp.getResourceName(service); + return "sncp:req:" + Sncp.getResourceType(service).getSimpleName().replaceAll("Service.*$", "").toLowerCase() + (resname.isEmpty() ? "" : ("-" + resname)); + } + + //格式: sncp:resp:node10 + protected static String generateSncpRespTopic(Application application) { + return "sncp:resp:node" + application.getNodeid(); + } + + //格式: http:req:user + protected static String generateHttpReqTopic(NodeServer ns, Service service) { + String resname = Sncp.getResourceName(service); + return "http:req:" + Rest.getWebModuleName(service.getClass()).toLowerCase() + (resname.isEmpty() ? "" : ("-" + resname)); + } + + //格式: http:resp:node10 + protected static String generateHttpRespTopic(Application application) { + return "http:resp:node" + application.getNodeid(); + } + + //格式: ws:resp:node10 + protected static String generateWebSocketRespTopic(Application application) { + return "ws:resp:node" + application.getNodeid(); + } } diff --git a/src/org/redkale/mq/MessageResponse.java b/src/org/redkale/mq/MessageResponse.java index aab59cfb6..67fbfd81b 100644 --- a/src/org/redkale/mq/MessageResponse.java +++ b/src/org/redkale/mq/MessageResponse.java @@ -6,6 +6,10 @@ package org.redkale.mq; /** + * + * + *

+ * 详情见: https://redkale.org * * @author zhangjx */ diff --git a/src/org/redkale/mq/MessageStreams.java b/src/org/redkale/mq/MessageStreams.java new file mode 100644 index 000000000..04e3354b7 --- /dev/null +++ b/src/org/redkale/mq/MessageStreams.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.redkale.mq; + +/** + * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + */ +public interface MessageStreams { + +} diff --git a/src/org/redkale/net/http/Rest.java b/src/org/redkale/net/http/Rest.java index d8db68385..4ccc4e232 100644 --- a/src/org/redkale/net/http/Rest.java +++ b/src/org/redkale/net/http/Rest.java @@ -172,7 +172,7 @@ public final class Rest { return (!controller.name().isEmpty()) ? controller.name().trim() : serviceType.getSimpleName().replaceAll("Service.*$", "").toLowerCase(); } - static String getWebModuleName(Class serviceType) { + public static String getWebModuleName(Class serviceType) { final RestService controller = serviceType.getAnnotation(RestService.class); if (controller == null) return serviceType.getSimpleName().replaceAll("Service.*$", ""); if (controller.ignore()) return null;