学习到支付服务

This commit is contained in:
2026-03-03 20:10:22 +08:00
parent b0c2889ddf
commit 5d04837d46
6 changed files with 138 additions and 49 deletions

View File

@@ -1,18 +1,35 @@
package cn.mayiming.Consumer;
import cn.mayiming.Entity.PayTriggerMsgDTO;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@RocketMQMessageListener(
topic = "pay_topic",
consumerGroup = "pay-service-consumer",
selectorExpression = "pay_success"
selectorExpression = "*"
)
public class payConsumer implements RocketMQListener<String> {
public class payConsumer implements RocketMQListener<PayTriggerMsgDTO> {
@Override
public void onMessage(String s) {
System.out.println("接收到消息"+s);
public void onMessage(PayTriggerMsgDTO msg) {
// 消费者接收到消息,模拟支付流程(本地仅生成支付链接,记录到日志/订单)
try {
System.out.println("========== 接收到支付触发消息 ==========");
System.out.println("订单号:" + msg.getOrderNo());
System.out.println("用户ID" + msg.getUserId());
System.out.println("支付金额:" + msg.getPayAmount());
System.out.println("模拟支付链接http://localhost:8080/order/mock/pay?orderNo=" + msg.getOrderNo());
System.out.println("=======================================");
} catch (Exception e) {
e.printStackTrace();
// 本地模拟:消息消费失败可记录日志,生产环境需配置重试
System.err.println("消费支付触发消息失败,订单号:" + msg.getOrderNo() + ",原因:" + e.getMessage());
}
}
}
}

View File

@@ -0,0 +1,14 @@
package cn.mayiming.Entity;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PayTriggerMsgDTO {
private String orderNo; // 订单号(核心关联)
private Long userId; // 用户ID
private BigDecimal payAmount; // 支付金额
private String businessId; // 幂等ID透传
private Long goodsId; // 商品ID用于关单恢复库存
}

View File

@@ -0,0 +1,5 @@
package cn.mayiming.Mapper;
public interface payMapper {
}