Commit d29b0beb9b528c379c78407730221250cf11965f
1 parent
ade55d89
优化 mq starter 组件,增加 RedisMQTemplate 模板类
Showing
26 changed files
with
137 additions
and
75 deletions
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/message/config/InfConfigRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.infra.mq.message.config; | 1 | package cn.iocoder.yudao.adminserver.modules.infra.mq.message.config; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | 5 | ||
| 6 | /** | 6 | /** |
| 7 | * 配置数据刷新 Message | 7 | * 配置数据刷新 Message |
| 8 | */ | 8 | */ |
| 9 | @Data | 9 | @Data |
| 10 | -public class InfConfigRefreshMessage implements ChannelMessage { | 10 | +public class InfConfigRefreshMessage extends AbstractChannelMessage { |
| 11 | 11 | ||
| 12 | @Override | 12 | @Override |
| 13 | public String getChannel() { | 13 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/infra/mq/producer/config/InfConfigProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config; | 1 | package cn.iocoder.yudao.adminserver.modules.infra.mq.producer.config; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.adminserver.modules.infra.mq.message.config.InfConfigRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.infra.mq.message.config.InfConfigRefreshMessage; |
| 4 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 5 | -import org.springframework.data.redis.core.StringRedisTemplate; | 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| @@ -14,14 +13,14 @@ import javax.annotation.Resource; | @@ -14,14 +13,14 @@ import javax.annotation.Resource; | ||
| 14 | public class InfConfigProducer { | 13 | public class InfConfigProducer { |
| 15 | 14 | ||
| 16 | @Resource | 15 | @Resource |
| 17 | - private StringRedisTemplate stringRedisTemplate; | 16 | + private RedisMQTemplate redisMQTemplate; |
| 18 | 17 | ||
| 19 | /** | 18 | /** |
| 20 | * 发送 {@link InfConfigRefreshMessage} 消息 | 19 | * 发送 {@link InfConfigRefreshMessage} 消息 |
| 21 | */ | 20 | */ |
| 22 | public void sendConfigRefreshMessage() { | 21 | public void sendConfigRefreshMessage() { |
| 23 | InfConfigRefreshMessage message = new InfConfigRefreshMessage(); | 22 | InfConfigRefreshMessage message = new InfConfigRefreshMessage(); |
| 24 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 23 | + redisMQTemplate.send(message); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | } | 26 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dept/SysDeptRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.dept; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 部门数据刷新 Message | 8 | * 部门数据刷新 Message |
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 8 | */ | 11 | */ |
| 9 | @Data | 12 | @Data |
| 10 | -public class SysDeptRefreshMessage implements ChannelMessage { | 13 | +@EqualsAndHashCode(callSuper = true) |
| 14 | +public class SysDeptRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 15 | ||
| 12 | @Override | 16 | @Override |
| 13 | public String getChannel() { | 17 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/dict/SysDictDataRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.dict; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 字典数据数据刷新 Message | 8 | * 字典数据数据刷新 Message |
| 8 | */ | 9 | */ |
| 9 | @Data | 10 | @Data |
| 10 | -public class SysDictDataRefreshMessage implements ChannelMessage { | 11 | +@EqualsAndHashCode(callSuper = true) |
| 12 | +public class SysDictDataRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 13 | ||
| 12 | @Override | 14 | @Override |
| 13 | public String getChannel() { | 15 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/mail/SysMailSendMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.mail; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.mail; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.stream.StreamMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | import javax.validation.constraints.NotNull; | 7 | import javax.validation.constraints.NotNull; |
| 7 | import java.util.Map; | 8 | import java.util.Map; |
| @@ -12,7 +13,8 @@ import java.util.Map; | @@ -12,7 +13,8 @@ import java.util.Map; | ||
| 12 | * @author 芋道源码 | 13 | * @author 芋道源码 |
| 13 | */ | 14 | */ |
| 14 | @Data | 15 | @Data |
| 15 | -public class SysMailSendMessage implements StreamMessage { | 16 | +@EqualsAndHashCode(callSuper = true) |
| 17 | +public class SysMailSendMessage extends AbstractStreamMessage { | ||
| 16 | 18 | ||
| 17 | /** | 19 | /** |
| 18 | * 邮箱地址 | 20 | * 邮箱地址 |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysMenuRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 菜单数据刷新 Message | 8 | * 菜单数据刷新 Message |
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 8 | */ | 11 | */ |
| 9 | @Data | 12 | @Data |
| 10 | -public class SysMenuRefreshMessage implements ChannelMessage { | 13 | +@EqualsAndHashCode(callSuper = true) |
| 14 | +public class SysMenuRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 15 | ||
| 12 | @Override | 16 | @Override |
| 13 | public String getChannel() { | 17 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleMenuRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 角色与菜单数据刷新 Message | 8 | * 角色与菜单数据刷新 Message |
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 8 | */ | 11 | */ |
| 9 | @Data | 12 | @Data |
| 10 | -public class SysRoleMenuRefreshMessage implements ChannelMessage { | 13 | +@EqualsAndHashCode(callSuper = true) |
| 14 | +public class SysRoleMenuRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 15 | ||
| 12 | @Override | 16 | @Override |
| 13 | public String getChannel() { | 17 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/permission/SysRoleRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 角色数据刷新 Message | 8 | * 角色数据刷新 Message |
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 8 | */ | 11 | */ |
| 9 | @Data | 12 | @Data |
| 10 | -public class SysRoleRefreshMessage implements ChannelMessage { | 13 | +@EqualsAndHashCode(callSuper = true) |
| 14 | +public class SysRoleRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 15 | ||
| 12 | @Override | 16 | @Override |
| 13 | public String getChannel() { | 17 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsChannelRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 短信渠道的数据刷新 Message | 8 | * 短信渠道的数据刷新 Message |
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 8 | */ | 11 | */ |
| 9 | @Data | 12 | @Data |
| 10 | -public class SysSmsChannelRefreshMessage implements ChannelMessage { | 13 | +@EqualsAndHashCode(callSuper = true) |
| 14 | +public class SysSmsChannelRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 15 | ||
| 12 | @Override | 16 | @Override |
| 13 | public String getChannel() { | 17 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/message/sms/SysSmsTemplateRefreshMessage.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.message.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | 3 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | +import lombok.EqualsAndHashCode; | ||
| 5 | 6 | ||
| 6 | /** | 7 | /** |
| 7 | * 短信模板的数据刷新 Message | 8 | * 短信模板的数据刷新 Message |
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 8 | */ | 11 | */ |
| 9 | @Data | 12 | @Data |
| 10 | -public class SysSmsTemplateRefreshMessage implements ChannelMessage { | 13 | +@EqualsAndHashCode(callSuper = true) |
| 14 | +public class SysSmsTemplateRefreshMessage extends AbstractChannelMessage { | ||
| 11 | 15 | ||
| 12 | @Override | 16 | @Override |
| 13 | public String getChannel() { | 17 | public String getChannel() { |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dept/SysDeptProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dept; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 4 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.dept.SysDeptRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.dept.SysDeptRefreshMessage; |
| 5 | -import org.springframework.data.redis.core.StringRedisTemplate; | 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| @@ -14,14 +13,14 @@ import javax.annotation.Resource; | @@ -14,14 +13,14 @@ import javax.annotation.Resource; | ||
| 14 | public class SysDeptProducer { | 13 | public class SysDeptProducer { |
| 15 | 14 | ||
| 16 | @Resource | 15 | @Resource |
| 17 | - private StringRedisTemplate stringRedisTemplate; | 16 | + private RedisMQTemplate redisMQTemplate; |
| 18 | 17 | ||
| 19 | /** | 18 | /** |
| 20 | * 发送 {@link SysDeptRefreshMessage} 消息 | 19 | * 发送 {@link SysDeptRefreshMessage} 消息 |
| 21 | */ | 20 | */ |
| 22 | public void sendDeptRefreshMessage() { | 21 | public void sendDeptRefreshMessage() { |
| 23 | SysDeptRefreshMessage message = new SysDeptRefreshMessage(); | 22 | SysDeptRefreshMessage message = new SysDeptRefreshMessage(); |
| 24 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 23 | + redisMQTemplate.send(message); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | } | 26 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/dict/SysDictDataProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.dict; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 4 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.dict.SysDictDataRefreshMessage; |
| 5 | -import org.springframework.data.redis.core.StringRedisTemplate; | 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| @@ -14,14 +13,14 @@ import javax.annotation.Resource; | @@ -14,14 +13,14 @@ import javax.annotation.Resource; | ||
| 14 | public class SysDictDataProducer { | 13 | public class SysDictDataProducer { |
| 15 | 14 | ||
| 16 | @Resource | 15 | @Resource |
| 17 | - private StringRedisTemplate stringRedisTemplate; | 16 | + private RedisMQTemplate redisMQTemplate; |
| 18 | 17 | ||
| 19 | /** | 18 | /** |
| 20 | * 发送 {@link SysDictDataRefreshMessage} 消息 | 19 | * 发送 {@link SysDictDataRefreshMessage} 消息 |
| 21 | */ | 20 | */ |
| 22 | public void sendDictDataRefreshMessage() { | 21 | public void sendDictDataRefreshMessage() { |
| 23 | SysDictDataRefreshMessage message = new SysDictDataRefreshMessage(); | 22 | SysDictDataRefreshMessage message = new SysDictDataRefreshMessage(); |
| 24 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 23 | + redisMQTemplate.send(message); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | } | 26 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysMenuProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 4 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysMenuRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysMenuRefreshMessage; |
| 5 | -import org.springframework.data.redis.core.StringRedisTemplate; | 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| @@ -14,14 +13,14 @@ import javax.annotation.Resource; | @@ -14,14 +13,14 @@ import javax.annotation.Resource; | ||
| 14 | public class SysMenuProducer { | 13 | public class SysMenuProducer { |
| 15 | 14 | ||
| 16 | @Resource | 15 | @Resource |
| 17 | - private StringRedisTemplate stringRedisTemplate; | 16 | + private RedisMQTemplate redisMQTemplate; |
| 18 | 17 | ||
| 19 | /** | 18 | /** |
| 20 | * 发送 {@link SysMenuRefreshMessage} 消息 | 19 | * 发送 {@link SysMenuRefreshMessage} 消息 |
| 21 | */ | 20 | */ |
| 22 | public void sendMenuRefreshMessage() { | 21 | public void sendMenuRefreshMessage() { |
| 23 | SysMenuRefreshMessage message = new SysMenuRefreshMessage(); | 22 | SysMenuRefreshMessage message = new SysMenuRefreshMessage(); |
| 24 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 23 | + redisMQTemplate.send(message); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | } | 26 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysPermissionProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 4 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleMenuRefreshMessage; |
| 5 | -import org.springframework.data.redis.core.StringRedisTemplate; | 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| @@ -14,14 +13,14 @@ import javax.annotation.Resource; | @@ -14,14 +13,14 @@ import javax.annotation.Resource; | ||
| 14 | public class SysPermissionProducer { | 13 | public class SysPermissionProducer { |
| 15 | 14 | ||
| 16 | @Resource | 15 | @Resource |
| 17 | - private StringRedisTemplate stringRedisTemplate; | 16 | + private RedisMQTemplate redisMQTemplate; |
| 18 | 17 | ||
| 19 | /** | 18 | /** |
| 20 | * 发送 {@link SysRoleMenuRefreshMessage} 消息 | 19 | * 发送 {@link SysRoleMenuRefreshMessage} 消息 |
| 21 | */ | 20 | */ |
| 22 | public void sendRoleMenuRefreshMessage() { | 21 | public void sendRoleMenuRefreshMessage() { |
| 23 | SysRoleMenuRefreshMessage message = new SysRoleMenuRefreshMessage(); | 22 | SysRoleMenuRefreshMessage message = new SysRoleMenuRefreshMessage(); |
| 24 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 23 | + redisMQTemplate.send(message); |
| 25 | } | 24 | } |
| 26 | 25 | ||
| 27 | } | 26 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/permission/SysRoleProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.permission; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 4 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.permission.SysRoleRefreshMessage; |
| 5 | -import org.springframework.data.redis.core.StringRedisTemplate; | 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import org.springframework.stereotype.Component; | 5 | import org.springframework.stereotype.Component; |
| 7 | 6 | ||
| 8 | import javax.annotation.Resource; | 7 | import javax.annotation.Resource; |
| @@ -16,14 +15,14 @@ import javax.annotation.Resource; | @@ -16,14 +15,14 @@ import javax.annotation.Resource; | ||
| 16 | public class SysRoleProducer { | 15 | public class SysRoleProducer { |
| 17 | 16 | ||
| 18 | @Resource | 17 | @Resource |
| 19 | - private StringRedisTemplate stringRedisTemplate; | 18 | + private RedisMQTemplate redisMQTemplate; |
| 20 | 19 | ||
| 21 | /** | 20 | /** |
| 22 | * 发送 {@link SysRoleRefreshMessage} 消息 | 21 | * 发送 {@link SysRoleRefreshMessage} 消息 |
| 23 | */ | 22 | */ |
| 24 | public void sendRoleRefreshMessage() { | 23 | public void sendRoleRefreshMessage() { |
| 25 | SysRoleRefreshMessage message = new SysRoleRefreshMessage(); | 24 | SysRoleRefreshMessage message = new SysRoleRefreshMessage(); |
| 26 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 25 | + redisMQTemplate.send(message); |
| 27 | } | 26 | } |
| 28 | 27 | ||
| 29 | } | 28 | } |
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/system/mq/producer/sms/SysSmsProducer.java
| 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms; | 1 | package cn.iocoder.yudao.adminserver.modules.system.mq.producer.sms; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.common.core.KeyValue; | ||
| 4 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | ||
| 5 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage; | 3 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsChannelRefreshMessage; |
| 6 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage; | 4 | import cn.iocoder.yudao.adminserver.modules.system.mq.message.sms.SysSmsTemplateRefreshMessage; |
| 5 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | ||
| 7 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 8 | -import org.springframework.data.redis.core.StringRedisTemplate; | ||
| 9 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| 10 | 8 | ||
| 11 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| 12 | -import java.util.List; | ||
| 13 | 10 | ||
| 14 | /** | 11 | /** |
| 15 | * Sms 短信相关消息的 Producer | 12 | * Sms 短信相关消息的 Producer |
| @@ -22,14 +19,14 @@ import java.util.List; | @@ -22,14 +19,14 @@ import java.util.List; | ||
| 22 | public class SysSmsProducer { | 19 | public class SysSmsProducer { |
| 23 | 20 | ||
| 24 | @Resource | 21 | @Resource |
| 25 | - private StringRedisTemplate stringRedisTemplate; | 22 | + private RedisMQTemplate redisMQTemplate; |
| 26 | 23 | ||
| 27 | /** | 24 | /** |
| 28 | * 发送 {@link SysSmsChannelRefreshMessage} 消息 | 25 | * 发送 {@link SysSmsChannelRefreshMessage} 消息 |
| 29 | */ | 26 | */ |
| 30 | public void sendSmsChannelRefreshMessage() { | 27 | public void sendSmsChannelRefreshMessage() { |
| 31 | SysSmsChannelRefreshMessage message = new SysSmsChannelRefreshMessage(); | 28 | SysSmsChannelRefreshMessage message = new SysSmsChannelRefreshMessage(); |
| 32 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 29 | + redisMQTemplate.send(message); |
| 33 | } | 30 | } |
| 34 | 31 | ||
| 35 | /** | 32 | /** |
| @@ -37,7 +34,7 @@ public class SysSmsProducer { | @@ -37,7 +34,7 @@ public class SysSmsProducer { | ||
| 37 | */ | 34 | */ |
| 38 | public void sendSmsTemplateRefreshMessage() { | 35 | public void sendSmsTemplateRefreshMessage() { |
| 39 | SysSmsTemplateRefreshMessage message = new SysSmsTemplateRefreshMessage(); | 36 | SysSmsTemplateRefreshMessage message = new SysSmsTemplateRefreshMessage(); |
| 40 | - RedisMessageUtils.sendChannelMessage(stringRedisTemplate, message); | 37 | + redisMQTemplate.send(message); |
| 41 | } | 38 | } |
| 42 | 39 | ||
| 43 | } | 40 | } |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/mq/message/sms/SysSmsSendMessage.java
| 1 | package cn.iocoder.yudao.coreservice.modules.system.mq.message.sms; | 1 | package cn.iocoder.yudao.coreservice.modules.system.mq.message.sms; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; | 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 4 | -import cn.iocoder.yudao.framework.mq.core.stream.StreamMessage; | 4 | +import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; |
| 5 | import lombok.Data; | 5 | import lombok.Data; |
| 6 | +import lombok.EqualsAndHashCode; | ||
| 6 | 7 | ||
| 7 | import javax.validation.constraints.NotNull; | 8 | import javax.validation.constraints.NotNull; |
| 8 | import java.util.List; | 9 | import java.util.List; |
| @@ -13,7 +14,8 @@ import java.util.List; | @@ -13,7 +14,8 @@ import java.util.List; | ||
| 13 | * @author 芋道源码 | 14 | * @author 芋道源码 |
| 14 | */ | 15 | */ |
| 15 | @Data | 16 | @Data |
| 16 | -public class SysSmsSendMessage implements StreamMessage { | 17 | +@EqualsAndHashCode(callSuper = true) |
| 18 | +public class SysSmsSendMessage extends AbstractStreamMessage { | ||
| 17 | 19 | ||
| 18 | /** | 20 | /** |
| 19 | * 短信日志编号 | 21 | * 短信日志编号 |
yudao-core-service/src/main/java/cn/iocoder/yudao/coreservice/modules/system/mq/producer/sms/SysSmsCoreProducer.java
| @@ -2,9 +2,8 @@ package cn.iocoder.yudao.coreservice.modules.system.mq.producer.sms; | @@ -2,9 +2,8 @@ package cn.iocoder.yudao.coreservice.modules.system.mq.producer.sms; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; | 3 | import cn.iocoder.yudao.coreservice.modules.system.mq.message.sms.SysSmsSendMessage; |
| 4 | import cn.iocoder.yudao.framework.common.core.KeyValue; | 4 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 5 | -import cn.iocoder.yudao.framework.mq.core.util.RedisMessageUtils; | 5 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; |
| 6 | import lombok.extern.slf4j.Slf4j; | 6 | import lombok.extern.slf4j.Slf4j; |
| 7 | -import org.springframework.data.redis.core.StringRedisTemplate; | ||
| 8 | import org.springframework.stereotype.Component; | 7 | import org.springframework.stereotype.Component; |
| 9 | 8 | ||
| 10 | import javax.annotation.Resource; | 9 | import javax.annotation.Resource; |
| @@ -21,7 +20,7 @@ import java.util.List; | @@ -21,7 +20,7 @@ import java.util.List; | ||
| 21 | public class SysSmsCoreProducer { | 20 | public class SysSmsCoreProducer { |
| 22 | 21 | ||
| 23 | @Resource | 22 | @Resource |
| 24 | - private StringRedisTemplate stringRedisTemplate; | 23 | + private RedisMQTemplate redisMQTemplate; |
| 25 | 24 | ||
| 26 | /** | 25 | /** |
| 27 | * 发送 {@link SysSmsSendMessage} 消息 | 26 | * 发送 {@link SysSmsSendMessage} 消息 |
| @@ -36,7 +35,7 @@ public class SysSmsCoreProducer { | @@ -36,7 +35,7 @@ public class SysSmsCoreProducer { | ||
| 36 | Long channelId, String apiTemplateId, List<KeyValue<String, Object>> templateParams) { | 35 | Long channelId, String apiTemplateId, List<KeyValue<String, Object>> templateParams) { |
| 37 | SysSmsSendMessage message = new SysSmsSendMessage().setLogId(logId).setMobile(mobile); | 36 | SysSmsSendMessage message = new SysSmsSendMessage().setLogId(logId).setMobile(mobile); |
| 38 | message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); | 37 | message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); |
| 39 | - RedisMessageUtils.sendStreamMessage(stringRedisTemplate, message); | 38 | + redisMQTemplate.send(message); |
| 40 | } | 39 | } |
| 41 | 40 | ||
| 42 | } | 41 | } |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/config/YudaoMQAutoConfiguration.java
| 1 | package cn.iocoder.yudao.framework.mq.config; | 1 | package cn.iocoder.yudao.framework.mq.config; |
| 2 | 2 | ||
| 3 | import cn.hutool.system.SystemUtil; | 3 | import cn.hutool.system.SystemUtil; |
| 4 | +import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | ||
| 4 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; | 5 | import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener; |
| 5 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; | 6 | import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; |
| 6 | import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; | 7 | import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; |
| 7 | import lombok.extern.slf4j.Slf4j; | 8 | import lombok.extern.slf4j.Slf4j; |
| 8 | import org.springframework.boot.autoconfigure.AutoConfigureAfter; | 9 | import org.springframework.boot.autoconfigure.AutoConfigureAfter; |
| 9 | -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; | ||
| 10 | import org.springframework.context.annotation.Bean; | 10 | import org.springframework.context.annotation.Bean; |
| 11 | import org.springframework.context.annotation.Configuration; | 11 | import org.springframework.context.annotation.Configuration; |
| 12 | import org.springframework.data.redis.connection.RedisConnectionFactory; | 12 | import org.springframework.data.redis.connection.RedisConnectionFactory; |
| @@ -15,6 +15,7 @@ import org.springframework.data.redis.connection.stream.ObjectRecord; | @@ -15,6 +15,7 @@ import org.springframework.data.redis.connection.stream.ObjectRecord; | ||
| 15 | import org.springframework.data.redis.connection.stream.ReadOffset; | 15 | import org.springframework.data.redis.connection.stream.ReadOffset; |
| 16 | import org.springframework.data.redis.connection.stream.StreamOffset; | 16 | import org.springframework.data.redis.connection.stream.StreamOffset; |
| 17 | import org.springframework.data.redis.core.RedisTemplate; | 17 | import org.springframework.data.redis.core.RedisTemplate; |
| 18 | +import org.springframework.data.redis.core.StringRedisTemplate; | ||
| 18 | import org.springframework.data.redis.listener.ChannelTopic; | 19 | import org.springframework.data.redis.listener.ChannelTopic; |
| 19 | import org.springframework.data.redis.listener.RedisMessageListenerContainer; | 20 | import org.springframework.data.redis.listener.RedisMessageListenerContainer; |
| 20 | import org.springframework.data.redis.stream.StreamMessageListenerContainer; | 21 | import org.springframework.data.redis.stream.StreamMessageListenerContainer; |
| @@ -31,6 +32,13 @@ import java.util.List; | @@ -31,6 +32,13 @@ import java.util.List; | ||
| 31 | @Slf4j | 32 | @Slf4j |
| 32 | public class YudaoMQAutoConfiguration { | 33 | public class YudaoMQAutoConfiguration { |
| 33 | 34 | ||
| 35 | + @Bean | ||
| 36 | + public RedisMQTemplate redisMQTemplate(StringRedisTemplate stringRedisTemplate) { | ||
| 37 | + return new RedisMQTemplate(stringRedisTemplate); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + // ========== 消费者相关 ========== | ||
| 41 | + | ||
| 34 | /** | 42 | /** |
| 35 | * 创建 Redis Pub/Sub 广播消费的容器 | 43 | * 创建 Redis Pub/Sub 广播消费的容器 |
| 36 | */ | 44 | */ |
| @@ -71,7 +79,6 @@ public class YudaoMQAutoConfiguration { | @@ -71,7 +79,6 @@ public class YudaoMQAutoConfiguration { | ||
| 71 | 79 | ||
| 72 | // 第二步,注册监听器,消费对应的 Stream 主题 | 80 | // 第二步,注册监听器,消费对应的 Stream 主题 |
| 73 | String consumerName = buildConsumerName(); | 81 | String consumerName = buildConsumerName(); |
| 74 | -// String consumerName = "110"; | ||
| 75 | listeners.forEach(listener -> { | 82 | listeners.forEach(listener -> { |
| 76 | // 创建 listener 对应的消费者分组 | 83 | // 创建 listener 对应的消费者分组 |
| 77 | try { | 84 | try { |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/util/RedisMessageUtils.java renamed to yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/RedisMQTemplate.java
| 1 | -package cn.iocoder.yudao.framework.mq.core.util; | 1 | +package cn.iocoder.yudao.framework.mq.core; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.mq.core.pubsub.ChannelMessage; | ||
| 4 | -import cn.iocoder.yudao.framework.mq.core.stream.StreamMessage; | ||
| 5 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | 3 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 4 | +import cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage; | ||
| 5 | +import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | ||
| 6 | +import lombok.AllArgsConstructor; | ||
| 6 | import org.springframework.data.redis.connection.stream.RecordId; | 7 | import org.springframework.data.redis.connection.stream.RecordId; |
| 7 | import org.springframework.data.redis.connection.stream.StreamRecords; | 8 | import org.springframework.data.redis.connection.stream.StreamRecords; |
| 8 | import org.springframework.data.redis.core.RedisTemplate; | 9 | import org.springframework.data.redis.core.RedisTemplate; |
| 9 | 10 | ||
| 10 | /** | 11 | /** |
| 11 | - * Redis 消息工具类 | 12 | + * Redis MQ 操作模板类 |
| 12 | * | 13 | * |
| 13 | * @author 芋道源码 | 14 | * @author 芋道源码 |
| 14 | */ | 15 | */ |
| 15 | -public class RedisMessageUtils { | 16 | +@AllArgsConstructor |
| 17 | +public class RedisMQTemplate { | ||
| 18 | + | ||
| 19 | + private final RedisTemplate<String, ?> redisTemplate; | ||
| 16 | 20 | ||
| 17 | /** | 21 | /** |
| 18 | * 发送 Redis 消息,基于 Redis pub/sub 实现 | 22 | * 发送 Redis 消息,基于 Redis pub/sub 实现 |
| 19 | * | 23 | * |
| 20 | - * @param redisTemplate Redis 操作模板 | ||
| 21 | * @param message 消息 | 24 | * @param message 消息 |
| 22 | */ | 25 | */ |
| 23 | - public static <T extends ChannelMessage> void sendChannelMessage(RedisTemplate<?, ?> redisTemplate, T message) { | 26 | + public <T extends AbstractChannelMessage> void send(T message) { |
| 24 | redisTemplate.convertAndSend(message.getChannel(), JsonUtils.toJsonString(message)); | 27 | redisTemplate.convertAndSend(message.getChannel(), JsonUtils.toJsonString(message)); |
| 25 | } | 28 | } |
| 26 | 29 | ||
| 27 | /** | 30 | /** |
| 28 | * 发送 Redis 消息,基于 Redis Stream 实现 | 31 | * 发送 Redis 消息,基于 Redis Stream 实现 |
| 29 | * | 32 | * |
| 30 | - * @param redisTemplate Redis 操作模板 | ||
| 31 | * @param message 消息 | 33 | * @param message 消息 |
| 32 | * @return 消息记录的编号对象 | 34 | * @return 消息记录的编号对象 |
| 33 | */ | 35 | */ |
| 34 | - public static <T extends StreamMessage> RecordId sendStreamMessage(RedisTemplate<String, ?> redisTemplate, T message) { | 36 | + public <T extends AbstractStreamMessage> RecordId send(T message) { |
| 35 | return redisTemplate.opsForStream().add(StreamRecords.newRecord() | 37 | return redisTemplate.opsForStream().add(StreamRecords.newRecord() |
| 36 | .ofObject(JsonUtils.toJsonString(message)) // 设置内容 | 38 | .ofObject(JsonUtils.toJsonString(message)) // 设置内容 |
| 37 | .withStreamKey(message.getStreamKey())); // 设置 stream key | 39 | .withStreamKey(message.getStreamKey())); // 设置 stream key |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/message/AbstractRedisMessage.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.mq.core.message; | ||
| 2 | + | ||
| 3 | +import java.util.HashMap; | ||
| 4 | +import java.util.Map; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * Redis 消息抽象基类 | ||
| 8 | + * | ||
| 9 | + * @author 芋道源码 | ||
| 10 | + */ | ||
| 11 | +public abstract class AbstractRedisMessage { | ||
| 12 | + | ||
| 13 | + /** | ||
| 14 | + * 头 | ||
| 15 | + */ | ||
| 16 | + private final Map<String, String> headers = new HashMap<>(); | ||
| 17 | + | ||
| 18 | + public String getHeader(String key) { | ||
| 19 | + return headers.get(key); | ||
| 20 | + } | ||
| 21 | + | ||
| 22 | + public void addHeader(String key, String value) { | ||
| 23 | + headers.put(key, value); | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | +} |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/pubsub/ChannelMessage.java renamed to yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/pubsub/AbstractChannelMessage.java
| 1 | package cn.iocoder.yudao.framework.mq.core.pubsub; | 1 | package cn.iocoder.yudao.framework.mq.core.pubsub; |
| 2 | 2 | ||
| 3 | +import cn.iocoder.yudao.framework.mq.core.message.AbstractRedisMessage; | ||
| 3 | import com.fasterxml.jackson.annotation.JsonIgnore; | 4 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 4 | 5 | ||
| 5 | /** | 6 | /** |
| 6 | - * Redis Channel Message 接口 | 7 | + * Redis Channel Message 抽象类 |
| 7 | * | 8 | * |
| 8 | * @author 芋道源码 | 9 | * @author 芋道源码 |
| 9 | */ | 10 | */ |
| 10 | -public interface ChannelMessage { | 11 | +public abstract class AbstractChannelMessage extends AbstractRedisMessage { |
| 11 | 12 | ||
| 12 | /** | 13 | /** |
| 13 | * 获得 Redis Channel | 14 | * 获得 Redis Channel |
| @@ -15,6 +16,6 @@ public interface ChannelMessage { | @@ -15,6 +16,6 @@ public interface ChannelMessage { | ||
| 15 | * @return Channel | 16 | * @return Channel |
| 16 | */ | 17 | */ |
| 17 | @JsonIgnore // 避免序列化 | 18 | @JsonIgnore // 避免序列化 |
| 18 | - String getChannel(); | 19 | + public abstract String getChannel(); |
| 19 | 20 | ||
| 20 | } | 21 | } |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/pubsub/AbstractChannelMessageListener.java
| @@ -15,7 +15,7 @@ import java.lang.reflect.Type; | @@ -15,7 +15,7 @@ import java.lang.reflect.Type; | ||
| 15 | * | 15 | * |
| 16 | * @author 芋道源码 | 16 | * @author 芋道源码 |
| 17 | */ | 17 | */ |
| 18 | -public abstract class AbstractChannelMessageListener<T extends ChannelMessage> implements MessageListener { | 18 | +public abstract class AbstractChannelMessageListener<T extends AbstractChannelMessage> implements MessageListener { |
| 19 | 19 | ||
| 20 | /** | 20 | /** |
| 21 | * 消息类型 | 21 | * 消息类型 |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/stream/StreamMessage.java renamed to yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/stream/AbstractStreamMessage.java
| @@ -3,11 +3,11 @@ package cn.iocoder.yudao.framework.mq.core.stream; | @@ -3,11 +3,11 @@ package cn.iocoder.yudao.framework.mq.core.stream; | ||
| 3 | import com.fasterxml.jackson.annotation.JsonIgnore; | 3 | import com.fasterxml.jackson.annotation.JsonIgnore; |
| 4 | 4 | ||
| 5 | /** | 5 | /** |
| 6 | - * Redis Stream Message 接口 | 6 | + * Redis Stream Message 抽象类 |
| 7 | * | 7 | * |
| 8 | * @author 芋道源码 | 8 | * @author 芋道源码 |
| 9 | */ | 9 | */ |
| 10 | -public interface StreamMessage { | 10 | +public abstract class AbstractStreamMessage { |
| 11 | 11 | ||
| 12 | /** | 12 | /** |
| 13 | * 获得 Redis Stream Key | 13 | * 获得 Redis Stream Key |
| @@ -15,6 +15,6 @@ public interface StreamMessage { | @@ -15,6 +15,6 @@ public interface StreamMessage { | ||
| 15 | * @return Channel | 15 | * @return Channel |
| 16 | */ | 16 | */ |
| 17 | @JsonIgnore // 避免序列化 | 17 | @JsonIgnore // 避免序列化 |
| 18 | - String getStreamKey(); | 18 | + public abstract String getStreamKey(); |
| 19 | 19 | ||
| 20 | } | 20 | } |
yudao-framework/yudao-spring-boot-starter-mq/src/main/java/cn/iocoder/yudao/framework/mq/core/stream/AbstractStreamMessageListener.java
| @@ -19,7 +19,7 @@ import java.lang.reflect.Type; | @@ -19,7 +19,7 @@ import java.lang.reflect.Type; | ||
| 19 | * | 19 | * |
| 20 | * @author 芋道源码 | 20 | * @author 芋道源码 |
| 21 | */ | 21 | */ |
| 22 | -public abstract class AbstractStreamMessageListener<T extends StreamMessage> | 22 | +public abstract class AbstractStreamMessageListener<T extends AbstractStreamMessage> |
| 23 | implements StreamListener<String, ObjectRecord<String, String>> { | 23 | implements StreamListener<String, ObjectRecord<String, String>> { |
| 24 | 24 | ||
| 25 | /** | 25 | /** |
| @@ -39,7 +39,7 @@ public abstract class AbstractStreamMessageListener<T extends StreamMessage> | @@ -39,7 +39,7 @@ public abstract class AbstractStreamMessageListener<T extends StreamMessage> | ||
| 39 | @Getter | 39 | @Getter |
| 40 | private String group; | 40 | private String group; |
| 41 | /** | 41 | /** |
| 42 | - * | 42 | + * RedisTemplate |
| 43 | */ | 43 | */ |
| 44 | @Setter | 44 | @Setter |
| 45 | private RedisTemplate<String, ?> redisTemplate; | 45 | private RedisTemplate<String, ?> redisTemplate; |
yudao-framework/yudao-spring-boot-starter-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/package-info.java
| @@ -4,5 +4,11 @@ | @@ -4,5 +4,11 @@ | ||
| 4 | * 2. Web:请求 HTTP API 时,Header 带上 tenant-id 租户编号。 | 4 | * 2. Web:请求 HTTP API 时,Header 带上 tenant-id 租户编号。 |
| 5 | * 3. Job:在 JobHandler 执行任务时,会按照每个租户,都独立并行执行一次。 | 5 | * 3. Job:在 JobHandler 执行任务时,会按照每个租户,都独立并行执行一次。 |
| 6 | * 4. MQ:TODO | 6 | * 4. MQ:TODO |
| 7 | + * 5. Async:异步需要保证 ThreadLocal 的传递性,通过使用阿里开源的 TransmittableThreadLocal 实现。相关的改造点,可见: | ||
| 8 | + * 1)Spring Async: | ||
| 9 | + * {@link cn.iocoder.yudao.framework.quartz.config.YudaoAsyncAutoConfiguration#threadPoolTaskExecutorBeanPostProcessor()} | ||
| 10 | + * 2)Spring Security: | ||
| 11 | + * TransmittableThreadLocalSecurityContextHolderStrategy | ||
| 12 | + * 和 YudaoSecurityAutoConfiguration#securityContextHolderMethodInvokingFactoryBean() 方法 | ||
| 7 | */ | 13 | */ |
| 8 | package cn.iocoder.yudao.framework.tenant; | 14 | package cn.iocoder.yudao.framework.tenant; |