循环依赖问题,太难搞了,fix bug

This commit is contained in:
Jack 2025-07-26 01:55:51 +08:00
parent 3ea6cf91a2
commit 66374e858d
2 changed files with 17 additions and 10 deletions

View File

@ -8,6 +8,7 @@
package com.suisung.mall.shop.order.listener;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import com.rabbitmq.client.Channel;
import com.suisung.mall.common.constant.CommonConstant;
@ -53,7 +54,6 @@ public class DelayMessageReceiver {
processDeadMessage(message, channel, msg);
} catch (Exception e) {
log.error("处理过期消息时发生异常,消息将重新入队,消息内容: {}", message, e);
rejectMessage(channel, msg);
}
}
@ -69,6 +69,7 @@ public class DelayMessageReceiver {
// 检查消息是否为空
if (message == null) {
log.warn("收到空消息,无法处理");
ackMessage(channel, msg);
return false;
}
@ -84,10 +85,12 @@ public class DelayMessageReceiver {
// 根据消息分类处理不同类型的消息
if (category == MqConstant.DEAD_EVENT_CATE_ORDER_EXPIRED) {
// 处理订单超时消息
return handleOrderExpiredMessage(message, channel, msg);
handleOrderExpiredMessage(message, channel, msg);
return true;
} else if (category == MqConstant.DEAD_EVENT_CATE_PRE_ORDER) {
// 处理预订单消息
return handlePreOrderMessage(message);
handlePreOrderMessage(message);
return true;
} else {
log.warn("未知的消息分类: {},消息内容: {}", category, message);
ackMessage(channel, msg);
@ -106,12 +109,19 @@ public class DelayMessageReceiver {
* @param message 消息内容
* @return 处理结果
*/
private boolean handleOrderExpiredMessage(JSONObject message, Channel channel, Message msg) {
private void handleOrderExpiredMessage(JSONObject message, Channel channel, Message msg) {
try {
String orderId = message.getStr("orderId");
Integer storeId = message.getInt("storeId");
String title = message.getStr("title");
String content = message.getStr("message");
log.info("处理订单超时消息,订单号: {}, 店铺ID: {}", orderId, storeId);
if (StrUtil.isBlank(title)) {
title = "有一笔已超时的订单!";
}
if (StrUtil.isBlank(content)) {
content = "您有一笔已超时的订单[" + orderId + "],请及时处理。"; // 消息内容
}
// 构造推送消息内容
JSONObject payload = new JSONObject();
@ -120,16 +130,14 @@ public class DelayMessageReceiver {
// 发送推送消息给商家员工
pushMessageService.noticeMerchantEmployeeOrderAction(
storeId, orderId, message.getStr("title"),
message.getStr("message"), payload);
storeId, orderId, title,
content, payload);
log.info("订单超时消息处理完成,订单号: {}, 店铺ID: {}", orderId, storeId);
ackMessage(channel, msg);
return true;
} catch (Exception e) {
log.error("处理订单超时消息时发生异常,消息内容: {}", message, e);
ackMessage(channel, msg);
return false;
}
}

View File

@ -146,7 +146,6 @@ public class OrderPayedListener {
jsonObject.put("storeId", orderInfoOld.getStore_id()); // 店铺ID
jsonObject.put("title", "有一笔已超时的订单!"); // 消息标题
jsonObject.put("message", "您有一笔已超时的订单[" + orderId + "],请及时处理。"); // 消息内容
// 发送延迟消息
mqMessageService.sendDelayMessage(jsonObject.toString(), 1500L * 1000); // 转换为毫秒