Browse Source

优化调整

feature-1.1
wuxicheng 3 years ago
parent
commit
dbe3a94ee2
  1. 30
      bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/handle/EnhanceMessageHandler.java
  2. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/listener/GoldRewardConsumer.java
  3. 6
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/listener/VipRecordCreateConsumer.java
  4. 6
      bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java

30
bnyer-common/bnyer-common-rocketmq/src/main/java/com/bnyer/common/rocketmq/handle/EnhanceMessageHandler.java

@ -215,23 +215,39 @@ public abstract class EnhanceMessageHandler<T extends BaseMessage> {
} }
/** /**
* 构建返回队列通知 * 构建返回队列通知消息
* @param returnTopic * @param oldMessage
* @param id
* @param status * @param status
* @return * @return
* @param <T>
*/ */
protected MqRecordMessage buildReturnMessage(String returnTopic,Long id,EnumMessageStatus status){ protected MqRecordMessage buildReturnMessage(MqRecordMessage oldMessage,EnumMessageStatus status){
MqRecordMessage mqRecordMessage = new MqRecordMessage(); MqRecordMessage mqRecordMessage = new MqRecordMessage();
String orderReturnTopic = rocketMQEnhanceTemplate.reBuildTopic(returnTopic); String orderReturnTopic = rocketMQEnhanceTemplate.reBuildTopic(oldMessage.getReturnTopic());
mqRecordMessage.setMessageKey(IdUtil.randomUUID()); mqRecordMessage.setMessageKey(IdUtil.randomUUID());
mqRecordMessage.setSource(applicationName); mqRecordMessage.setSource(applicationName);
mqRecordMessage.setTopic(orderReturnTopic); mqRecordMessage.setTopic(orderReturnTopic);
mqRecordMessage.setConsumerGroupName(orderReturnTopic); mqRecordMessage.setConsumerGroupName(orderReturnTopic);
mqRecordMessage.setStatus(status); mqRecordMessage.setStatus(status);
mqRecordMessage.setId(id); mqRecordMessage.setId(oldMessage.getId());
return mqRecordMessage; return mqRecordMessage;
} }
/**
* 返回成功通知
* @param message
*/
protected void sendReturnSuccessMessage(MqRecordMessage message){
MqRecordMessage returnMessage = buildReturnMessage(message, EnumMessageStatus.SUCCESS);
rocketMQEnhanceTemplate.sendAsyncMsg(returnMessage.getReturnTopic(),null,returnMessage);
}
/**
* 返回失败通知
* @param message
*/
protected void sendReturnFailsMessage(MqRecordMessage message){
MqRecordMessage returnMessage = buildReturnMessage(message, EnumMessageStatus.FAILS);
rocketMQEnhanceTemplate.sendAsyncMsg(returnMessage.getReturnTopic(),null,returnMessage);
}
} }

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/listener/GoldRewardConsumer.java

@ -141,8 +141,7 @@ public class GoldRewardConsumer extends EnhanceMessageHandler<MqRecordMessage> i
//发送返回队列,告知已经处理成功,完成最终一致性 //发送返回队列,告知已经处理成功,完成最终一致性
//TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免 //TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免
// 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的 // 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的
MqRecordMessage mqRecordMessage = super.buildReturnMessage(message.getReturnTopic(), message.getId(), EnumMessageStatus.SUCCESS); super.sendReturnSuccessMessage(message);
rocketMQEnhanceTemplate.sendAsyncMsg(message.getReturnTopic(),null,mqRecordMessage);
} }
@Override @Override
@ -150,8 +149,7 @@ public class GoldRewardConsumer extends EnhanceMessageHandler<MqRecordMessage> i
//发送返回队列,告知已经超过最大重试次数,消费失败,需人工处理该记录 //发送返回队列,告知已经超过最大重试次数,消费失败,需人工处理该记录
//TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免 //TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免
// 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的 // 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的
MqRecordMessage mqRecordMessage = super.buildReturnMessage(message.getReturnTopic(), message.getId(), EnumMessageStatus.FAILS); super.sendReturnFailsMessage(message);
rocketMQEnhanceTemplate.sendAsyncMsg(message.getReturnTopic(),null,mqRecordMessage);
} }
@Override @Override

6
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/listener/VipRecordCreateConsumer.java

@ -49,8 +49,7 @@ public class VipRecordCreateConsumer extends EnhanceMessageHandler<MqRecordMessa
//发送返回队列,告知已经处理成功,完成最终一致性 //发送返回队列,告知已经处理成功,完成最终一致性
//TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免 //TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免
// 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的 // 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的
MqRecordMessage mqRecordMessage = super.buildReturnMessage(message.getReturnTopic(), message.getId(), EnumMessageStatus.SUCCESS); super.sendReturnSuccessMessage(message);
rocketMQEnhanceTemplate.sendAsyncMsg(message.getReturnTopic(),null,mqRecordMessage);
} }
@Override @Override
@ -58,8 +57,7 @@ public class VipRecordCreateConsumer extends EnhanceMessageHandler<MqRecordMessa
//发送返回队列,告知已经超过最大重试次数,消费失败,需人工处理该记录 //发送返回队列,告知已经超过最大重试次数,消费失败,需人工处理该记录
//TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免 //TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免
// 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的 // 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的
MqRecordMessage mqRecordMessage = super.buildReturnMessage(message.getReturnTopic(), message.getId(), EnumMessageStatus.FAILS); super.sendReturnFailsMessage(message);
rocketMQEnhanceTemplate.sendAsyncMsg(message.getReturnTopic(),null,mqRecordMessage);
} }
@Override @Override

6
bnyer-services/bnyer-order/src/main/java/com/bnyer/order/listener/vip/VipOrderPayNotifyConsumer.java

@ -61,8 +61,7 @@ public class VipOrderPayNotifyConsumer extends EnhanceMessageHandler<MqRecordMes
//发送返回队列,告知已经处理成功,完成最终一致性 //发送返回队列,告知已经处理成功,完成最终一致性
//TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免 //TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免
// 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的 // 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的
MqRecordMessage mqRecordMessage = super.buildReturnMessage(message.getReturnTopic(), message.getId(), EnumMessageStatus.SUCCESS); super.sendReturnSuccessMessage(message);
rocketMQEnhanceTemplate.sendAsyncMsg(message.getReturnTopic(),null,mqRecordMessage);
} }
@Override @Override
@ -70,8 +69,7 @@ public class VipOrderPayNotifyConsumer extends EnhanceMessageHandler<MqRecordMes
//发送返回队列,告知已经超过最大重试次数,消费失败,需人工处理该记录 //发送返回队列,告知已经超过最大重试次数,消费失败,需人工处理该记录
//TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免 //TODO: 2023/05/20 为避免这里消息通知失败,定时补偿的时候需要根据创建时间,判断如果超过固定时间比如30分钟,就直接设置成作废,避免
// 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的 // 定时任务一直补偿,因为这里不做补偿机制,是不会重发消息的
MqRecordMessage mqRecordMessage = super.buildReturnMessage(message.getReturnTopic(), message.getId(), EnumMessageStatus.FAILS); super.sendReturnFailsMessage(message);
rocketMQEnhanceTemplate.sendAsyncMsg(message.getReturnTopic(),null,mqRecordMessage);
} }
@Override @Override

Loading…
Cancel
Save