From 145dcdf1d3c2fb711c993abce9f7255226b68522 Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 12 Jun 2024 15:19:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=BC=BA=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/mq/MessageConsumer.java | 1 + .../java/org/redkale/mq/MessageManager.java | 20 +++++++++-- .../java/org/redkale/mq/MessageProducer.java | 1 + src/main/java/org/redkale/mq/Messaged.java | 34 ++++++++++++++++--- .../java/org/redkale/mq/ResourceConsumer.java | 26 ++++++++++++-- .../java/org/redkale/mq/ResourceProducer.java | 18 ++++++++-- .../org/redkale/source/DataSqlMapper.java | 2 +- 7 files changed, 89 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/redkale/mq/MessageConsumer.java b/src/main/java/org/redkale/mq/MessageConsumer.java index 2e17815da..7e6dd8532 100644 --- a/src/main/java/org/redkale/mq/MessageConsumer.java +++ b/src/main/java/org/redkale/mq/MessageConsumer.java @@ -15,6 +15,7 @@ import org.redkale.util.AnyValue; * * @see org.redkale.mq.MessageConext * @see org.redkale.mq.ResourceConsumer + * @see org.redkale.mq.Messaged * @author zhangjx * @param T * @since 2.8.0 diff --git a/src/main/java/org/redkale/mq/MessageManager.java b/src/main/java/org/redkale/mq/MessageManager.java index bbc978029..2ab1698f5 100644 --- a/src/main/java/org/redkale/mq/MessageManager.java +++ b/src/main/java/org/redkale/mq/MessageManager.java @@ -16,12 +16,26 @@ import org.redkale.inject.Resourcable; */ public interface MessageManager extends Resourcable { - // + /** + * 创建topic + * + * @param topics topic集合 + * @return 是否成功 + */ public boolean createTopic(String... topics); - // 删除topic,如果不存在则跳过 + /** + * 删除topic,如果不存在则跳过 + * + * @param topics topic集合 + * @return 是否成功 + */ public boolean deleteTopic(String... topics); - // 查询所有topic + /** + * 查询所有topic + * + * @return topic集合 + */ public abstract List queryTopic(); } diff --git a/src/main/java/org/redkale/mq/MessageProducer.java b/src/main/java/org/redkale/mq/MessageProducer.java index 08eb22a9d..221c56504 100644 --- a/src/main/java/org/redkale/mq/MessageProducer.java +++ b/src/main/java/org/redkale/mq/MessageProducer.java @@ -12,6 +12,7 @@ import org.redkale.convert.Convert; * *

详情见: https://redkale.org * + * @see org.redkale.mq.ResourceProducer * @author zhangjx * @since 2.8.0 */ diff --git a/src/main/java/org/redkale/mq/Messaged.java b/src/main/java/org/redkale/mq/Messaged.java index 807fd1d74..b3e633213 100644 --- a/src/main/java/org/redkale/mq/Messaged.java +++ b/src/main/java/org/redkale/mq/Messaged.java @@ -3,21 +3,47 @@ */ package org.redkale.mq; -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - import java.lang.annotation.Documented; +import static java.lang.annotation.ElementType.METHOD; import java.lang.annotation.Retention; +import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.annotation.Target; import org.redkale.convert.ConvertType; import org.redkale.service.LoadMode; /** - * MQ资源注解, 只能标记在Service类方法上 1、方法必须是protected/public 2、方法不能是final/static + * MQ资源注解, 只能标记在Service类方法上, 方法会被框架动态生成{@link org.redkale.mq.MessageConsumer}对象供内部调用
+ * 1、方法必须是protected/public
+ * 2、方法不能是final/static
+ * 3、方法的参数只能是1个或者2个, 1个参数视为Message数据类型,2个参数则另一个必须是{@link org.redkale.mq.MessageConext}
+ *

+ * + *
+ * public class MyMessageService extends AbstractService {
+ *
+ *    @Messaged(mq="defaultmq", topics={"test-topic"})
+ *    protected void onMessage(Record msg) {
+ *        //打印msg
+ *    }
+ *
+ *    @Messaged(topics={"test-topic2"})
+ *    protected void onMessage2(MessageConext context, Record msg) {
+ *        //打印msg
+ *    }
+ *
+ *    @Messaged(topics={"test-topic3"})
+ *    public void onMessage3(Record msg, MessageConext context) {
+ *        //打印msg
+ *    }
+ * }
+ * 
+ * + *
* *

详情见: https://redkale.org * * @see org.redkale.mq.ResourceConsumer + * @see org.redkale.mq.MessageConext * @author zhangjx * @since 2.8.0 */ diff --git a/src/main/java/org/redkale/mq/ResourceConsumer.java b/src/main/java/org/redkale/mq/ResourceConsumer.java index e2f9c4dbe..400986cdd 100644 --- a/src/main/java/org/redkale/mq/ResourceConsumer.java +++ b/src/main/java/org/redkale/mq/ResourceConsumer.java @@ -3,10 +3,9 @@ */ package org.redkale.mq; +import java.lang.annotation.*; import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.*; import org.redkale.annotation.ClassDepends; import org.redkale.convert.ConvertType; @@ -15,6 +14,7 @@ import org.redkale.convert.ConvertType; * *

详情见: https://redkale.org * + * @see org.redkale.mq.MessageConsumer * @author zhangjx * @since 2.8.0 */ @@ -24,11 +24,31 @@ import org.redkale.convert.ConvertType; @Retention(RUNTIME) public @interface ResourceConsumer { + /** + * {@link org.redkale.mq.MessageAgent}对象对应名称 + * + * @return MQ名称 + */ String mq() default ""; - + + /** + * MQ客户端分组名称 + * + * @return 组名称 + */ String group() default ""; + /** + * 监听的topic + * + * @return topic + */ String[] topics(); + /** + * 消息序列化类型 + * + * @return 序列化类型 + */ ConvertType convertType() default ConvertType.JSON; } diff --git a/src/main/java/org/redkale/mq/ResourceProducer.java b/src/main/java/org/redkale/mq/ResourceProducer.java index da86c817d..5ff3075ae 100644 --- a/src/main/java/org/redkale/mq/ResourceProducer.java +++ b/src/main/java/org/redkale/mq/ResourceProducer.java @@ -3,10 +3,9 @@ */ package org.redkale.mq; +import java.lang.annotation.*; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.*; import org.redkale.convert.ConvertType; /** @@ -23,9 +22,24 @@ import org.redkale.convert.ConvertType; @Retention(RUNTIME) public @interface ResourceProducer { + /** + * {@link org.redkale.mq.MessageAgent}对象对应名称 + * + * @return MQ名称 + */ String mq() default ""; + /** + * 是否必须要加载,为ture时若mq()值对应{@link org.redkale.mq.MessageAgent}对象不存在的情况下会抛异常 + * + * @return 是否必须要加载 + */ boolean required() default true; + /** + * 消息序列化类型 + * + * @return 序列化类型 + */ ConvertType convertType() default ConvertType.JSON; } diff --git a/src/main/java/org/redkale/source/DataSqlMapper.java b/src/main/java/org/redkale/source/DataSqlMapper.java index 1c66a2764..a47253243 100644 --- a/src/main/java/org/redkale/source/DataSqlMapper.java +++ b/src/main/java/org/redkale/source/DataSqlMapper.java @@ -24,7 +24,7 @@ import org.redkale.util.Sheet; *

* *
- * public interface ForumInfoMapper extends BaseMapper<ForumInfo> {
+ * public interface ForumInfoMapper extends DataSqlMapper<ForumInfo> {
  *
  *   @Sql("SELECT f.forum_groupid, s.forum_section_color "
  *      + "FROM forum_info f, forum_section s "