zhouhao преди 8 години
родител
ревизия
a00b2e3862
променени са 18 файла, в които са добавени 272 реда и са изтрити 44 реда
  1. 0 2
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java
  2. 1 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java
  3. 3 1
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java
  4. 4 2
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java
  5. 9 4
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java
  6. 11 18
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageBuilder.java
  7. 19 4
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageSubjectBuilder.java
  8. 5 3
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageBuilder.java
  9. 14 3
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageSubjectBuilder.java
  10. 14 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleQueueMessageSubject.java
  11. 8 3
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleUserMessageSubject.java
  12. 3 1
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java
  13. 12 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/QueueMessageSubject.java
  14. 5 3
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/UserMessageSubject.java
  15. 46 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleDataMessage.java
  16. 31 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleObjectMessage.java
  17. 54 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleServiceInvokerMessage.java
  18. 33 0
      hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleTextMessage.java

+ 0 - 2
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/MessageSubscribe.java

@@ -26,8 +26,6 @@ import java.util.function.Consumer;
  * @author zhouhao
  */
 public interface MessageSubscribe<M extends Message> {
-    MessageSubscribe<M> iam(MessageSubject iam);
-
     MessageSubscribe<M> onMessage(Consumer<M> consumer);
 
     void cancel();

+ 1 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageConsumer.java

@@ -30,4 +30,5 @@ import java.lang.annotation.*;
 public @interface MessageConsumer {
     String topic() default "";
 
+    String queue() default "";
 }

+ 3 - 1
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/annotation/MessageSupplier.java

@@ -29,5 +29,7 @@ import java.lang.annotation.*;
 @Inherited
 @Documented
 public @interface MessageSupplier {
-    
+    String queue() default "";
+
+    String topic() default "";
 }

+ 4 - 2
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageBuilder.java

@@ -23,15 +23,17 @@ import org.hswebframework.web.message.support.ObjectMessage;
 import org.hswebframework.web.message.support.ServiceInvokerMessage;
 import org.hswebframework.web.message.support.TextMessage;
 
+import java.io.Serializable;
+
 /**
  * @author zhouhao
  */
 public interface MessageBuilder {
     TextMessage text(String msg);
 
-    <T> ObjectMessage object(T msg);
+    <T extends Serializable> ObjectMessage<T> object(T msg);
 
     DataMessage data(byte[] msg);
 
-    ServiceInvokerMessage service(String serviceName);
+    ServiceInvokerMessage service(String serviceName, String method, Serializable... args);
 }

+ 9 - 4
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/MessageSubjectBuilder.java

@@ -19,9 +19,7 @@
 package org.hswebframework.web.message.builder;
 
 import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.MultipleUserMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.hswebframework.web.message.support.UserMessageSubject;
+import org.hswebframework.web.message.support.*;
 
 import java.util.Set;
 
@@ -37,5 +35,12 @@ public interface MessageSubjectBuilder {
 
     MessageSubject system();
 
-    TopicMessageSubject topic(String topic);
+    TopicMessageSubject topic(String topicName);
+
+    QueueMessageSubject queue(String queueName);
+
+    MultipleQueueMessageSubject queues(String... userIds);
+
+    MultipleQueueMessageSubject queues(Set<String> userIds);
+
 }

+ 11 - 18
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageBuilder.java

@@ -22,6 +22,10 @@ import org.hswebframework.web.message.support.DataMessage;
 import org.hswebframework.web.message.support.ObjectMessage;
 import org.hswebframework.web.message.support.ServiceInvokerMessage;
 import org.hswebframework.web.message.support.TextMessage;
+import org.hswebframework.web.message.support.simple.SimpleDataMessage;
+import org.hswebframework.web.message.support.simple.SimpleObjectMessage;
+import org.hswebframework.web.message.support.simple.SimpleServiceInvokerMessage;
+import org.hswebframework.web.message.support.simple.SimpleTextMessage;
 
 import java.io.Serializable;
 
@@ -30,35 +34,24 @@ import java.io.Serializable;
  *
  * @author zhouhao
  */
-public class SimpleMessageBuilder implements MessageBuilder ,Serializable {
+public class SimpleMessageBuilder implements MessageBuilder, Serializable {
     @Override
     public TextMessage text(String msg) {
-        return new TextMessage() {
-            @Override
-            public String getMessage() {
-                return msg;
-            }
-
-            @Override
-            public String toString() {
-                return msg;
-            }
-        };
+        return new SimpleTextMessage(msg);
     }
 
     @Override
-    public <T> ObjectMessage object(T msg) {
-        return (ObjectMessage) () -> msg;
+    public <T extends Serializable> ObjectMessage<T> object(T msg) {
+        return new SimpleObjectMessage<>(msg);
     }
 
     @Override
     public DataMessage data(byte[] msg) {
-        return (DataMessage) () -> msg;
+        return new SimpleDataMessage(msg);
     }
 
     @Override
-    public ServiceInvokerMessage service(String serviceName) {
-
-        return null;
+    public ServiceInvokerMessage service(String serviceName, String method, Serializable... args) {
+        return new SimpleServiceInvokerMessage(serviceName,method,args);
     }
 }

+ 19 - 4
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/SimpleMessageSubjectBuilder.java

@@ -19,21 +19,20 @@
 package org.hswebframework.web.message.builder;
 
 import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.MultipleUserMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.hswebframework.web.message.support.UserMessageSubject;
+import org.hswebframework.web.message.support.*;
 
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * TODO 完成注释
  *
  * @author zhouhao
  */
-public class SimpleMessageSubjectBuilder implements MessageSubjectBuilder,Serializable {
+public class SimpleMessageSubjectBuilder implements MessageSubjectBuilder, Serializable {
     @Override
     public UserMessageSubject user(String userId) {
         return () -> userId;
@@ -58,4 +57,20 @@ public class SimpleMessageSubjectBuilder implements MessageSubjectBuilder,Serial
     public TopicMessageSubject topic(String topic) {
         return () -> topic;
     }
+
+    @Override
+    public QueueMessageSubject queue(String queueName) {
+        return () -> queueName;
+    }
+
+    @Override
+    public MultipleQueueMessageSubject queues(String... userIds) {
+        Set<String> ids = Arrays.stream(userIds).collect(Collectors.toSet());
+        return queues(ids);
+    }
+
+    @Override
+    public MultipleQueueMessageSubject queues(Set<String> userIds) {
+        return () -> userIds;
+    }
 }

+ 5 - 3
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageBuilder.java

@@ -23,6 +23,8 @@ import org.hswebframework.web.message.support.ObjectMessage;
 import org.hswebframework.web.message.support.ServiceInvokerMessage;
 import org.hswebframework.web.message.support.TextMessage;
 
+import java.io.Serializable;
+
 /**
  * TODO 完成注释
  *
@@ -35,7 +37,7 @@ public class StaticMessageBuilder {
         return messageBuilder.text(msg);
     }
 
-    public static <T> ObjectMessage object(T msg) {
+    public static <T extends Serializable> ObjectMessage<T> object(T msg) {
         return messageBuilder.object(msg);
     }
 
@@ -43,7 +45,7 @@ public class StaticMessageBuilder {
         return messageBuilder.data(msg);
     }
 
-    public static ServiceInvokerMessage service(String serviceName) {
-        return messageBuilder.service(serviceName);
+    public static ServiceInvokerMessage service(String serviceName, String method, Serializable... args) {
+        return messageBuilder.service(serviceName, method, args);
     }
 }

+ 14 - 3
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/builder/StaticMessageSubjectBuilder.java

@@ -19,9 +19,7 @@
 package org.hswebframework.web.message.builder;
 
 import org.hswebframework.web.message.MessageSubject;
-import org.hswebframework.web.message.support.MultipleUserMessageSubject;
-import org.hswebframework.web.message.support.TopicMessageSubject;
-import org.hswebframework.web.message.support.UserMessageSubject;
+import org.hswebframework.web.message.support.*;
 
 import java.util.Arrays;
 import java.util.HashSet;
@@ -54,4 +52,17 @@ public class StaticMessageSubjectBuilder {
     public static TopicMessageSubject topic(String topic) {
         return messageSubjectBuilder.topic(topic);
     }
+
+    public static QueueMessageSubject queue(String queueName) {
+        return messageSubjectBuilder.queue(queueName);
+    }
+
+    public static MultipleQueueMessageSubject queues(String... queueNames) {
+        return messageSubjectBuilder.queues(queueNames);
+    }
+
+    public static MultipleQueueMessageSubject queues(Set<String> queueNames) {
+        return messageSubjectBuilder.queues(queueNames);
+    }
+
 }

+ 14 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleQueueMessageSubject.java

@@ -0,0 +1,14 @@
+package org.hswebframework.web.message.support;
+
+import org.hswebframework.web.message.MessageSubject;
+
+import java.util.Set;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public interface MultipleQueueMessageSubject extends MessageSubject {
+    Set<String> getQueueName();
+}

+ 8 - 3
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/MultipleUserMessageSubject.java

@@ -18,15 +18,20 @@
 
 package org.hswebframework.web.message.support;
 
-import org.hswebframework.web.message.MessageSubject;
-
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * TODO 完成注释
  *
  * @author zhouhao
  */
-public interface MultipleUserMessageSubject extends MessageSubject {
+public interface MultipleUserMessageSubject extends MultipleQueueMessageSubject {
     Set<String> getUserIdList();
+
+    default Set<String> getQueueName() {
+        return getUserIdList().stream()
+                .map(id -> "queue_for_user:" + id)
+                .collect(Collectors.toSet());
+    }
 }

+ 3 - 1
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/ObjectMessage.java

@@ -20,11 +20,13 @@ package org.hswebframework.web.message.support;
 
 import org.hswebframework.web.message.Message;
 
+import java.io.Serializable;
+
 /**
  * TODO 完成注释
  *
  * @author zhouhao
  */
-public interface ObjectMessage<T> extends Message {
+public interface ObjectMessage<T extends Serializable> extends Message {
     T getObject();
 }

+ 12 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/QueueMessageSubject.java

@@ -0,0 +1,12 @@
+package org.hswebframework.web.message.support;
+
+import org.hswebframework.web.message.MessageSubject;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public interface QueueMessageSubject extends MessageSubject {
+    String getQueueName();
+}

+ 5 - 3
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/UserMessageSubject.java

@@ -18,13 +18,15 @@
 
 package org.hswebframework.web.message.support;
 
-import org.hswebframework.web.message.MessageSubject;
-
 /**
  * TODO 完成注释
  *
  * @author zhouhao
  */
-public interface UserMessageSubject extends MessageSubject {
+public interface UserMessageSubject extends QueueMessageSubject {
     String getUserId();
+
+    default String getQueueName() {
+        return "queue_for_user:" + getUserId();
+    }
 }

+ 46 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleDataMessage.java

@@ -0,0 +1,46 @@
+/*
+ *  Copyright 2016 http://www.hswebframework.org
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+
+package org.hswebframework.web.message.support.simple;
+
+import org.hswebframework.web.message.support.DataMessage;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public class SimpleDataMessage implements DataMessage {
+    private byte[] message;
+
+    @Override
+    public byte[] getMessage() {
+        return message;
+    }
+
+    public void setMessage(byte[] message) {
+        this.message = message;
+    }
+
+    public SimpleDataMessage(byte[] message) {
+        this.message = message;
+    }
+
+    public SimpleDataMessage() {
+    }
+}

+ 31 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleObjectMessage.java

@@ -0,0 +1,31 @@
+package org.hswebframework.web.message.support.simple;
+
+import org.hswebframework.web.message.support.ObjectMessage;
+
+import java.io.Serializable;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public class SimpleObjectMessage<T extends Serializable> implements ObjectMessage<T> {
+
+    private T object;
+
+    @Override
+    public T getObject() {
+        return object;
+    }
+
+    public void setObject(T object) {
+        this.object = object;
+    }
+
+    public SimpleObjectMessage(T object) {
+        this.object = object;
+    }
+
+    public SimpleObjectMessage() {
+    }
+}

+ 54 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleServiceInvokerMessage.java

@@ -0,0 +1,54 @@
+package org.hswebframework.web.message.support.simple;
+
+import org.hswebframework.web.message.support.ServiceInvokerMessage;
+
+import java.io.Serializable;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public class SimpleServiceInvokerMessage implements ServiceInvokerMessage {
+    private String serviceName;
+
+    private String method;
+
+    private Serializable[] args;
+
+    @Override
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    @Override
+    public String getMethod() {
+        return method;
+    }
+
+    @Override
+    public Serializable[] getArgs() {
+        return args;
+    }
+
+    public void setArgs(Serializable[] args) {
+        this.args = args;
+    }
+
+    public void setMethod(String method) {
+        this.method = method;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public SimpleServiceInvokerMessage(String serviceName, String method, Serializable... args) {
+        this.serviceName = serviceName;
+        this.method = method;
+        this.args = args;
+    }
+
+    public SimpleServiceInvokerMessage() {
+    }
+}

+ 33 - 0
hsweb-message/hsweb-message-api/src/main/java/org/hswebframework/web/message/support/simple/SimpleTextMessage.java

@@ -0,0 +1,33 @@
+package org.hswebframework.web.message.support.simple;
+
+import org.hswebframework.web.message.support.TextMessage;
+
+/**
+ * TODO 完成注释
+ *
+ * @author zhouhao
+ */
+public class SimpleTextMessage implements TextMessage {
+    private String message;
+
+    public SimpleTextMessage() {
+    }
+
+    public SimpleTextMessage(String message) {
+        this.message = message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    @Override
+    public String getMessage() {
+        return message;
+    }
+
+    @Override
+    public String toString() {
+        return String.valueOf(message);
+    }
+}