mq repeatConsumeTag 问题处理
This commit is contained in:
parent
d1a4522d18
commit
37cd617687
@ -1,5 +1,6 @@
|
||||
package com.red.circle.order.app.listener;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.red.circle.common.business.core.enums.ReceiptType;
|
||||
import com.red.circle.common.business.core.enums.SysOriginPlatformEnum;
|
||||
@ -71,7 +72,7 @@ public class BuySuccessListener implements MessageListener {
|
||||
.logTag("语音房会话")
|
||||
.consumeMsgTimeoutMinute(15)
|
||||
.repeatConsumeMinute(15)
|
||||
.repeatConsumeTag("BuySuccess")
|
||||
.repeatConsumeTag(extractOrderNo(message))
|
||||
.checkConsumeTag(BuySuccessSink.TAG)
|
||||
.message(message)
|
||||
.build(),
|
||||
@ -79,6 +80,22 @@ public class BuySuccessListener implements MessageListener {
|
||||
this::execute);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提取订单号作为幂等键
|
||||
*/
|
||||
private String extractOrderNo(ConsumerMessage message) {
|
||||
try {
|
||||
BuySuccessEvent event = JSON.parseObject(
|
||||
message.getBody(),
|
||||
BuySuccessEvent.class
|
||||
);
|
||||
return "BUY_SUCCESS_" + event.getPurchaseHistoryId();
|
||||
} catch (Exception e) {
|
||||
log.warn("解析订单号失败,使用消息ID作为幂等键", e);
|
||||
return "BUY_SUCCESS_" + message.getMessageId();
|
||||
}
|
||||
}
|
||||
|
||||
private void execute(BuySuccessEvent eventBody) {
|
||||
if (!ArithmeticUtils.gt(eventBody.getCandyQuantity(), BigDecimal.ZERO)
|
||||
|| Objects.equals(eventBody.getTrialPeriod(), Boolean.TRUE)) {
|
||||
|
||||
@ -31,15 +31,16 @@ public class BadgeCheckListener implements MessageListener {
|
||||
return messageEventProcess.consume(
|
||||
MessageEventProcessDescribe.builder()
|
||||
.logTag("徽章检测处理")
|
||||
.consumeMsgTimeoutMinute(60)
|
||||
.consumeMsgTimeoutMinute(5)
|
||||
.repeatConsumeMinute(1)
|
||||
.repeatConsumeTag("LiveVoiceSession")
|
||||
.repeatConsumeTag("BADGE_CHECK_" + message.getMessageId())
|
||||
.checkConsumeTag(BadgeCheckSink.TAG)
|
||||
.message(message)
|
||||
.build(),
|
||||
BadgeEvent.class,
|
||||
eventBody -> badgeCommon.checkActivateBadgePermanent(eventBody.getUserId(),
|
||||
BadgeKeyEnum.valueOf(eventBody.getBadgeKey())));
|
||||
eventBody -> {
|
||||
// badgeCommon.checkActivateBadgePermanent(eventBody.getUserId(),BadgeKeyEnum.valueOf(eventBody.getBadgeKey()));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user