Commit d048daf7d6d8fc9bb6c061111f3a7590ffc28731
1 parent
87fb47ca
mq 重构:默认的 mq 实现,采用 event,减少对 redis、rocketmq 等消息队列的依赖
Showing
19 changed files
with
68 additions
and
87 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/consumer/coupon/UserCreateConsumer.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/consumer/coupon/CouponTakeByRegisterConsumer.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.mq.consumer.coupon; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; | |
| 4 | -import cn.iocoder.yudao.module.promotion.mq.message.coupon.UserCreateMessage; | |
| 3 | +import cn.iocoder.yudao.module.member.message.user.MemberUserCreateMessage; | |
| 5 | 4 | import cn.iocoder.yudao.module.promotion.service.coupon.CouponService; |
| 6 | 5 | import lombok.extern.slf4j.Slf4j; |
| 6 | +import org.springframework.context.event.EventListener; | |
| 7 | +import org.springframework.scheduling.annotation.Async; | |
| 7 | 8 | import org.springframework.stereotype.Component; |
| 8 | 9 | |
| 9 | 10 | import javax.annotation.Resource; |
| 10 | 11 | |
| 11 | 12 | /** |
| 12 | - * 针对 {@link UserCreateMessage} 的消费者 | |
| 13 | + * 用户注册时,发送优惠劵的消费者,基 {@link MemberUserCreateMessage} 消息 | |
| 13 | 14 | * |
| 14 | 15 | * @author owen |
| 15 | 16 | */ |
| 16 | 17 | @Component |
| 17 | 18 | @Slf4j |
| 18 | -public class UserCreateConsumer extends AbstractStreamMessageListener<UserCreateMessage> { | |
| 19 | +public class CouponTakeByRegisterConsumer { | |
| 19 | 20 | |
| 20 | 21 | @Resource |
| 21 | 22 | private CouponService couponService; |
| 22 | 23 | |
| 23 | - @Override | |
| 24 | - public void onMessage(UserCreateMessage message) { | |
| 24 | + @EventListener | |
| 25 | + @Async // Spring Event 默认在 Producer 发送的线程,通过 @Async 实现异步 | |
| 26 | + public void onMessage(MemberUserCreateMessage message) { | |
| 25 | 27 | log.info("[onMessage][消息内容({})]", message); |
| 26 | 28 | couponService.takeCouponByRegister(message.getUserId()); |
| 27 | 29 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/consumer/package-info.java
0 → 100644
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/message/package-info.java
0 → 100644
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/producer/package-info.java
0 → 100644
yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/message/package-info.java
0 → 100644
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/mq/message/coupon/UserCreateMessage.java renamed to yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/message/user/MemberUserCreateMessage.java
| 1 | -package cn.iocoder.yudao.module.promotion.mq.message.coupon; | |
| 1 | +package cn.iocoder.yudao.module.member.message.user; | |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | |
| 4 | 3 | import lombok.Data; |
| 5 | -import lombok.EqualsAndHashCode; | |
| 6 | 4 | |
| 7 | 5 | import javax.validation.constraints.NotNull; |
| 8 | 6 | |
| ... | ... | @@ -12,8 +10,7 @@ import javax.validation.constraints.NotNull; |
| 12 | 10 | * @author owen |
| 13 | 11 | */ |
| 14 | 12 | @Data |
| 15 | -@EqualsAndHashCode(callSuper = true) | |
| 16 | -public class UserCreateMessage extends AbstractStreamMessage { | |
| 13 | +public class MemberUserCreateMessage { | |
| 17 | 14 | |
| 18 | 15 | /** |
| 19 | 16 | * 用户编号 |
| ... | ... | @@ -21,9 +18,4 @@ public class UserCreateMessage extends AbstractStreamMessage { |
| 21 | 18 | @NotNull(message = "用户编号不能为空") |
| 22 | 19 | private Long userId; |
| 23 | 20 | |
| 24 | - @Override | |
| 25 | - public String getStreamKey() { | |
| 26 | - return "member.user.create"; | |
| 27 | - } | |
| 28 | - | |
| 29 | 21 | } | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/auth/AppAuthController.http
| ... | ... | @@ -4,7 +4,7 @@ Content-Type: application/json |
| 4 | 4 | tenant-id: {{appTenentId}} |
| 5 | 5 | |
| 6 | 6 | { |
| 7 | - "mobile": "15601691300", | |
| 7 | + "mobile": "15601691388", | |
| 8 | 8 | "password": "admin123" |
| 9 | 9 | } |
| 10 | 10 | |
| ... | ... | @@ -14,7 +14,7 @@ Content-Type: application/json |
| 14 | 14 | tenant-id: {{appTenentId}} |
| 15 | 15 | |
| 16 | 16 | { |
| 17 | - "mobile": "15601691399", | |
| 17 | + "mobile": "15601691388", | |
| 18 | 18 | "scene": 1 |
| 19 | 19 | } |
| 20 | 20 | |
| ... | ... | @@ -22,9 +22,10 @@ tenant-id: {{appTenentId}} |
| 22 | 22 | POST {{appApi}}/member/auth/sms-login |
| 23 | 23 | Content-Type: application/json |
| 24 | 24 | tenant-id: {{appTenentId}} |
| 25 | +terminal: 30 | |
| 25 | 26 | |
| 26 | 27 | { |
| 27 | - "mobile": "15601691301", | |
| 28 | + "mobile": "15601691388", | |
| 28 | 29 | "code": 9999 |
| 29 | 30 | } |
| 30 | 31 | ... | ... |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/consumer/package-info.java
0 → 100644
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/message/package-info.java
0 → 100644
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/message/user/MemberUserCreateMessage.java deleted
| 1 | -package cn.iocoder.yudao.module.member.mq.message.user; | |
| 2 | - | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | |
| 4 | -import lombok.Data; | |
| 5 | -import lombok.EqualsAndHashCode; | |
| 6 | - | |
| 7 | -import javax.validation.constraints.NotNull; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * 会员用户创建消息 | |
| 11 | - * | |
| 12 | - * @author owen | |
| 13 | - */ | |
| 14 | -@Data | |
| 15 | -@EqualsAndHashCode(callSuper = true) | |
| 16 | -public class MemberUserCreateMessage extends AbstractStreamMessage { | |
| 17 | - | |
| 18 | - /** | |
| 19 | - * 用户编号 | |
| 20 | - */ | |
| 21 | - @NotNull(message = "用户编号不能为空") | |
| 22 | - private Long userId; | |
| 23 | - | |
| 24 | - @Override | |
| 25 | - public String getStreamKey() { | |
| 26 | - return "member.user.create"; | |
| 27 | - } | |
| 28 | - | |
| 29 | -} |
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/producer/package-info.java
0 → 100644
yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/mq/producer/user/MemberUserProducer.java
| 1 | 1 | package cn.iocoder.yudao.module.member.mq.producer.user; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | |
| 4 | -import cn.iocoder.yudao.module.member.mq.message.user.MemberUserCreateMessage; | |
| 3 | +import cn.iocoder.yudao.module.member.message.user.MemberUserCreateMessage; | |
| 5 | 4 | import lombok.extern.slf4j.Slf4j; |
| 5 | +import org.springframework.context.ApplicationContext; | |
| 6 | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 | |
| 8 | 8 | import javax.annotation.Resource; |
| ... | ... | @@ -17,7 +17,7 @@ import javax.annotation.Resource; |
| 17 | 17 | public class MemberUserProducer { |
| 18 | 18 | |
| 19 | 19 | @Resource |
| 20 | - private RedisMQTemplate redisMQTemplate; | |
| 20 | + private ApplicationContext applicationContext; | |
| 21 | 21 | |
| 22 | 22 | /** |
| 23 | 23 | * 发送 {@link MemberUserCreateMessage} 消息 |
| ... | ... | @@ -25,7 +25,7 @@ public class MemberUserProducer { |
| 25 | 25 | * @param userId 用户编号 |
| 26 | 26 | */ |
| 27 | 27 | public void sendUserCreateMessage(Long userId) { |
| 28 | - redisMQTemplate.send(new MemberUserCreateMessage().setUserId(userId)); | |
| 28 | + applicationContext.publishEvent(new MemberUserCreateMessage().setUserId(userId)); | |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/sms/SmsTemplateController.http
| ... | ... | @@ -6,9 +6,9 @@ tenant-id: {{adminTenentId}} |
| 6 | 6 | |
| 7 | 7 | { |
| 8 | 8 | "templateCode": "test_01", |
| 9 | - "mobile": "156016913900", | |
| 10 | - "params": { | |
| 11 | - "key01": "value01", | |
| 12 | - "key02": "value02" | |
| 9 | + "mobile": "15601691390", | |
| 10 | + "templateParams": { | |
| 11 | + "operation": "value01", | |
| 12 | + "code": "value02" | |
| 13 | 13 | } |
| 14 | 14 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/mail/MailSendConsumer.java
| 1 | 1 | package cn.iocoder.yudao.module.system.mq.consumer.mail; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; | |
| 4 | 3 | import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; |
| 5 | -import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; | |
| 6 | 4 | import cn.iocoder.yudao.module.system.service.mail.MailSendService; |
| 7 | 5 | import lombok.extern.slf4j.Slf4j; |
| 6 | +import org.springframework.context.event.EventListener; | |
| 7 | +import org.springframework.scheduling.annotation.Async; | |
| 8 | 8 | import org.springframework.stereotype.Component; |
| 9 | 9 | |
| 10 | 10 | import javax.annotation.Resource; |
| ... | ... | @@ -16,12 +16,13 @@ import javax.annotation.Resource; |
| 16 | 16 | */ |
| 17 | 17 | @Component |
| 18 | 18 | @Slf4j |
| 19 | -public class MailSendConsumer extends AbstractStreamMessageListener<MailSendMessage> { | |
| 19 | +public class MailSendConsumer { | |
| 20 | 20 | |
| 21 | 21 | @Resource |
| 22 | 22 | private MailSendService mailSendService; |
| 23 | 23 | |
| 24 | - @Override | |
| 24 | + @EventListener | |
| 25 | + @Async // Spring Event 默认在 Producer 发送的线程,通过 @Async 实现异步 | |
| 25 | 26 | public void onMessage(MailSendMessage message) { |
| 26 | 27 | log.info("[onMessage][消息内容({})]", message); |
| 27 | 28 | mailSendService.doSendMail(message); | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/consumer/sms/SmsSendConsumer.java
| ... | ... | @@ -2,8 +2,9 @@ package cn.iocoder.yudao.module.system.mq.consumer.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; |
| 4 | 4 | import cn.iocoder.yudao.module.system.service.sms.SmsSendService; |
| 5 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessageListener; | |
| 6 | 5 | import lombok.extern.slf4j.Slf4j; |
| 6 | +import org.springframework.context.event.EventListener; | |
| 7 | +import org.springframework.scheduling.annotation.Async; | |
| 7 | 8 | import org.springframework.stereotype.Component; |
| 8 | 9 | |
| 9 | 10 | import javax.annotation.Resource; |
| ... | ... | @@ -15,12 +16,13 @@ import javax.annotation.Resource; |
| 15 | 16 | */ |
| 16 | 17 | @Component |
| 17 | 18 | @Slf4j |
| 18 | -public class SmsSendConsumer extends AbstractStreamMessageListener<SmsSendMessage> { | |
| 19 | +public class SmsSendConsumer { | |
| 19 | 20 | |
| 20 | 21 | @Resource |
| 21 | 22 | private SmsSendService smsSendService; |
| 22 | 23 | |
| 23 | - @Override | |
| 24 | + @EventListener | |
| 25 | + @Async // Spring Event 默认在 Producer 发送的线程,通过 @Async 实现异步 | |
| 24 | 26 | public void onMessage(SmsSendMessage message) { |
| 25 | 27 | log.info("[onMessage][消息内容({})]", message); |
| 26 | 28 | smsSendService.doSendSms(message); | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/mail/MailSendMessage.java
| 1 | 1 | package cn.iocoder.yudao.module.system.mq.message.mail; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | |
| 4 | 3 | import lombok.Data; |
| 5 | -import lombok.EqualsAndHashCode; | |
| 6 | 4 | |
| 7 | 5 | import javax.validation.constraints.NotEmpty; |
| 8 | 6 | import javax.validation.constraints.NotNull; |
| ... | ... | @@ -13,8 +11,7 @@ import javax.validation.constraints.NotNull; |
| 13 | 11 | * @author 芋道源码 |
| 14 | 12 | */ |
| 15 | 13 | @Data |
| 16 | -@EqualsAndHashCode(callSuper = true) | |
| 17 | -public class MailSendMessage extends AbstractStreamMessage { | |
| 14 | +public class MailSendMessage { | |
| 18 | 15 | |
| 19 | 16 | /** |
| 20 | 17 | * 邮件日志编号 |
| ... | ... | @@ -47,9 +44,4 @@ public class MailSendMessage extends AbstractStreamMessage { |
| 47 | 44 | @NotEmpty(message = "邮件内容不能为空") |
| 48 | 45 | private String content; |
| 49 | 46 | |
| 50 | - @Override | |
| 51 | - public String getStreamKey() { | |
| 52 | - return "system.mail.send"; | |
| 53 | - } | |
| 54 | - | |
| 55 | 47 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/message/sms/SmsSendMessage.java
| 1 | 1 | package cn.iocoder.yudao.module.system.mq.message.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 4 | -import cn.iocoder.yudao.framework.mq.core.stream.AbstractStreamMessage; | |
| 5 | 4 | import lombok.Data; |
| 6 | -import lombok.EqualsAndHashCode; | |
| 7 | 5 | |
| 8 | 6 | import javax.validation.constraints.NotNull; |
| 9 | 7 | import java.util.List; |
| ... | ... | @@ -14,8 +12,7 @@ import java.util.List; |
| 14 | 12 | * @author 芋道源码 |
| 15 | 13 | */ |
| 16 | 14 | @Data |
| 17 | -@EqualsAndHashCode(callSuper = true) | |
| 18 | -public class SmsSendMessage extends AbstractStreamMessage { | |
| 15 | +public class SmsSendMessage { | |
| 19 | 16 | |
| 20 | 17 | /** |
| 21 | 18 | * 短信日志编号 |
| ... | ... | @@ -42,9 +39,4 @@ public class SmsSendMessage extends AbstractStreamMessage { |
| 42 | 39 | */ |
| 43 | 40 | private List<KeyValue<String, Object>> templateParams; |
| 44 | 41 | |
| 45 | - @Override | |
| 46 | - public String getStreamKey() { | |
| 47 | - return "system.sms.send"; | |
| 48 | - } | |
| 49 | - | |
| 50 | 42 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/mail/MailProducer.java
| 1 | 1 | package cn.iocoder.yudao.module.system.mq.producer.mail; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | |
| 4 | 3 | import cn.iocoder.yudao.module.system.mq.message.mail.MailSendMessage; |
| 5 | 4 | import lombok.extern.slf4j.Slf4j; |
| 5 | +import org.springframework.context.ApplicationContext; | |
| 6 | 6 | import org.springframework.stereotype.Component; |
| 7 | 7 | |
| 8 | 8 | import javax.annotation.Resource; |
| ... | ... | @@ -18,7 +18,7 @@ import javax.annotation.Resource; |
| 18 | 18 | public class MailProducer { |
| 19 | 19 | |
| 20 | 20 | @Resource |
| 21 | - private RedisMQTemplate redisMQTemplate; | |
| 21 | + private ApplicationContext applicationContext; | |
| 22 | 22 | |
| 23 | 23 | /** |
| 24 | 24 | * 发送 {@link MailSendMessage} 消息 |
| ... | ... | @@ -35,7 +35,7 @@ public class MailProducer { |
| 35 | 35 | MailSendMessage message = new MailSendMessage() |
| 36 | 36 | .setLogId(sendLogId).setMail(mail).setAccountId(accountId) |
| 37 | 37 | .setNickname(nickname).setTitle(title).setContent(content); |
| 38 | - redisMQTemplate.send(message); | |
| 38 | + applicationContext.publishEvent(message); | |
| 39 | 39 | } |
| 40 | 40 | |
| 41 | 41 | } | ... | ... |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/mq/producer/sms/SmsProducer.java
| 1 | 1 | package cn.iocoder.yudao.module.system.mq.producer.sms; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 4 | -import cn.iocoder.yudao.framework.mq.core.RedisMQTemplate; | |
| 5 | 4 | import cn.iocoder.yudao.module.system.mq.message.sms.SmsSendMessage; |
| 6 | 5 | import lombok.extern.slf4j.Slf4j; |
| 6 | +import org.springframework.context.ApplicationContext; | |
| 7 | 7 | import org.springframework.stereotype.Component; |
| 8 | 8 | |
| 9 | 9 | import javax.annotation.Resource; |
| ... | ... | @@ -20,7 +20,7 @@ import java.util.List; |
| 20 | 20 | public class SmsProducer { |
| 21 | 21 | |
| 22 | 22 | @Resource |
| 23 | - private RedisMQTemplate redisMQTemplate; | |
| 23 | + private ApplicationContext applicationContext; | |
| 24 | 24 | |
| 25 | 25 | /** |
| 26 | 26 | * 发送 {@link SmsSendMessage} 消息 |
| ... | ... | @@ -35,7 +35,7 @@ public class SmsProducer { |
| 35 | 35 | Long channelId, String apiTemplateId, List<KeyValue<String, Object>> templateParams) { |
| 36 | 36 | SmsSendMessage message = new SmsSendMessage().setLogId(logId).setMobile(mobile); |
| 37 | 37 | message.setChannelId(channelId).setApiTemplateId(apiTemplateId).setTemplateParams(templateParams); |
| 38 | - redisMQTemplate.send(message); | |
| 38 | + applicationContext.publishEvent(message); | |
| 39 | 39 | } |
| 40 | 40 | |
| 41 | 41 | } | ... | ... |