发送task至延迟队列开发

This commit is contained in:
jieyuu 2024-08-27 22:08:38 +08:00
parent f961aa5c46
commit 7ded360e7c
2 changed files with 41 additions and 2 deletions

View File

@ -0,0 +1,23 @@
package net.jieyuu.model;
import lombok.Data;
@Data
public class CouponRecordMessage {
/**
* 消息队列id
*/
private Long messageId;
/**
* 订单号
*/
private String outTradeNo;
/**
* 库存锁定工作单id
*/
private Long taskId;
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.jieyuu.config.InterceptorConfig; import net.jieyuu.config.InterceptorConfig;
import net.jieyuu.config.RabbitMQConfig;
import net.jieyuu.enums.BizCodeEnum; import net.jieyuu.enums.BizCodeEnum;
import net.jieyuu.enums.CouponStateEnum; import net.jieyuu.enums.CouponStateEnum;
import net.jieyuu.enums.StockTaskStateEnum; import net.jieyuu.enums.StockTaskStateEnum;
@ -13,6 +14,7 @@ import net.jieyuu.interceptor.LoginInterceptor;
import net.jieyuu.mapper.CouponTaskMapper; import net.jieyuu.mapper.CouponTaskMapper;
import net.jieyuu.model.CouponRecordDO; import net.jieyuu.model.CouponRecordDO;
import net.jieyuu.mapper.CouponRecordMapper; import net.jieyuu.mapper.CouponRecordMapper;
import net.jieyuu.model.CouponRecordMessage;
import net.jieyuu.model.CouponTaskDO; import net.jieyuu.model.CouponTaskDO;
import net.jieyuu.model.LoginUser; import net.jieyuu.model.LoginUser;
import net.jieyuu.request.LockCouponRecordRequest; import net.jieyuu.request.LockCouponRecordRequest;
@ -20,6 +22,7 @@ import net.jieyuu.service.CouponRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.jieyuu.utils.JsonData; import net.jieyuu.utils.JsonData;
import net.jieyuu.vo.CouponRecordVO; import net.jieyuu.vo.CouponRecordVO;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -47,6 +50,11 @@ public class CouponRecordServiceImpl extends ServiceImpl<CouponRecordMapper, Cou
@Autowired @Autowired
private CouponTaskMapper couponTaskMapper; private CouponTaskMapper couponTaskMapper;
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private RabbitMQConfig rabbitMQConfig;
@Override @Override
public Map<String, Object> page(int page, int size) { public Map<String, Object> page(int page, int size) {
LoginUser loginUser = LoginInterceptor.threadLocal.get(); LoginUser loginUser = LoginInterceptor.threadLocal.get();
@ -111,8 +119,16 @@ public class CouponRecordServiceImpl extends ServiceImpl<CouponRecordMapper, Cou
//mq延迟队列投递 //mq延迟队列投递
if (insertRows == couponTaskDOList.size() && insertRows == updateRows) { if (insertRows == couponTaskDOList.size() && insertRows == updateRows) {
//发送延迟消息 TODO //发送延迟消息
for (CouponTaskDO couponTaskDO : couponTaskDOList) {
// 构建CouponRecordMessage
CouponRecordMessage couponRecordMessage = new CouponRecordMessage();
couponRecordMessage.setOutTradeNo(orderOutTradeNo);
couponRecordMessage.setTaskId(couponTaskDO.getId());
// 传入交换机 投入延迟队列
rabbitTemplate.convertAndSend(rabbitMQConfig.getEventExchange(), rabbitMQConfig.getCouponReleaseDelayRoutingKey(), couponRecordMessage);
log.info("优惠券锁定消息发送成功:{}", couponRecordMessage.toString());
}
return JsonData.buildSuccess(); return JsonData.buildSuccess();
} else { } else {
throw new BizException(BizCodeEnum.COUPON_RECORD_LOCK_FAIL); throw new BizException(BizCodeEnum.COUPON_RECORD_LOCK_FAIL);