|
|
|
@ -1,8 +1,6 @@ |
|
|
|
package com.bnyer.img.service.impl; |
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil; |
|
|
|
import cn.hutool.core.date.DateTime; |
|
|
|
import cn.hutool.core.date.DateUtil; |
|
|
|
import cn.hutool.core.util.IdUtil; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
|
@ -12,7 +10,7 @@ import com.bnyer.common.core.enums.EnumMessageStatus; |
|
|
|
import com.bnyer.common.core.utils.DateUtils; |
|
|
|
import com.bnyer.common.rocketmq.constant.RocketMqConstant; |
|
|
|
import com.bnyer.common.rocketmq.constant.RocketMqTopic; |
|
|
|
import com.bnyer.common.rocketmq.domain.MqRecordMessage; |
|
|
|
import com.bnyer.common.rocketmq.domain.BnyerMessage; |
|
|
|
import com.bnyer.common.rocketmq.template.RocketMQEnhanceTemplate; |
|
|
|
import com.bnyer.img.mapper.ImgMqMessageRecordMapper; |
|
|
|
import com.bnyer.img.service.ImgMqMessageRecordService; |
|
|
|
@ -68,18 +66,18 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService |
|
|
|
* @param <T> |
|
|
|
*/ |
|
|
|
@NotNull |
|
|
|
private <T> MqRecordMessage getMqRecordMessage(String topic, String tag, T message) { |
|
|
|
private <T> BnyerMessage getMqRecordMessage(String topic, String tag, T message) { |
|
|
|
String buildTopic = rocketMQEnhanceTemplate.reBuildTopic(topic); |
|
|
|
String buildReturnTopic = rocketMQEnhanceTemplate.reBuildTopic(RocketMqTopic.IMG_RETURN_MSG_TOPIC); |
|
|
|
MqRecordMessage mqRecordMessage = new MqRecordMessage(); |
|
|
|
mqRecordMessage.setTopic(buildTopic); |
|
|
|
mqRecordMessage.setTag(tag); |
|
|
|
mqRecordMessage.setConsumerGroupName(buildTopic); |
|
|
|
mqRecordMessage.setMessageKey(applicationName + "-"+ IdUtil.getSnowflakeNextIdStr()); |
|
|
|
mqRecordMessage.setContent(JSON.toJSONString(message)); |
|
|
|
mqRecordMessage.setSource(applicationName); |
|
|
|
mqRecordMessage.setReturnTopic(buildReturnTopic); |
|
|
|
return mqRecordMessage; |
|
|
|
BnyerMessage bnyerMessage = new BnyerMessage(); |
|
|
|
bnyerMessage.setTopic(buildTopic); |
|
|
|
bnyerMessage.setTag(tag); |
|
|
|
bnyerMessage.setConsumerGroupName(buildTopic); |
|
|
|
bnyerMessage.setMessageKey(applicationName + "-"+ IdUtil.getSnowflakeNextIdStr()); |
|
|
|
bnyerMessage.setContent(JSON.toJSONString(message)); |
|
|
|
bnyerMessage.setSource(applicationName); |
|
|
|
bnyerMessage.setReturnTopic(buildReturnTopic); |
|
|
|
return bnyerMessage; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
@ -97,17 +95,17 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService |
|
|
|
RocketMQTemplate rocketMQTemplate = rocketMQEnhanceTemplate.getTemplate(); |
|
|
|
//保存消息记录
|
|
|
|
log.info("消息发送中,开始入库本地消息记录表"); |
|
|
|
MqRecordMessage mqRecordMessage = getMqRecordMessage(topic, tag, message); |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = saveMessageRecord(mqRecordMessage); |
|
|
|
mqRecordMessage.setId(imgMqMessageRecord.getId()); |
|
|
|
BnyerMessage bnyerMessage = getMqRecordMessage(topic, tag, message); |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = saveMessageRecord(bnyerMessage); |
|
|
|
bnyerMessage.setId(imgMqMessageRecord.getId()); |
|
|
|
//发消息
|
|
|
|
Message<MqRecordMessage> sendMessage = MessageBuilder.withPayload(mqRecordMessage).setHeader(RocketMQHeaders.KEYS, mqRecordMessage.getMessageKey()).build(); |
|
|
|
Message<BnyerMessage> sendMessage = MessageBuilder.withPayload(bnyerMessage).setHeader(RocketMQHeaders.KEYS, bnyerMessage.getMessageKey()).build(); |
|
|
|
SendResult sendResult; |
|
|
|
try { |
|
|
|
sendResult = rocketMQTemplate.syncSend(rocketMQEnhanceTemplate.buildDestination(topic,tag), sendMessage); |
|
|
|
log.info("topic:[{}]tag:[{}]同步消息[{}]发送结果[{}]", mqRecordMessage.getTopic(),mqRecordMessage.getTag(), JSONObject.toJSON(mqRecordMessage), JSONObject.toJSON(sendResult)); |
|
|
|
log.info("topic:[{}]tag:[{}]同步消息[{}]发送结果[{}]", bnyerMessage.getTopic(), bnyerMessage.getTag(), JSONObject.toJSON(bnyerMessage), JSONObject.toJSON(sendResult)); |
|
|
|
} catch (Exception e) { |
|
|
|
log.info("topic:[{}]tag:[{}]同步消息[{}]发送结果[{}]", mqRecordMessage.getTopic(),mqRecordMessage.getTag(), JSONObject.toJSON(mqRecordMessage), e.getMessage()); |
|
|
|
log.info("topic:[{}]tag:[{}]同步消息[{}]发送结果[{}]", bnyerMessage.getTopic(), bnyerMessage.getTag(), JSONObject.toJSON(bnyerMessage), e.getMessage()); |
|
|
|
log.info("消息发送失败,更新消息记录,等待定时任务进行消息补偿"); |
|
|
|
editMessageRecordStatus(imgMqMessageRecord.getId(), imgMqMessageRecord.getStatus(),e.getMessage()); |
|
|
|
// throw new RuntimeException(e);
|
|
|
|
@ -124,18 +122,18 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService |
|
|
|
RocketMQTemplate rocketMQTemplate = rocketMQEnhanceTemplate.getTemplate(); |
|
|
|
//保存消息记录
|
|
|
|
log.info("消息发送中,开始入库本地消息记录表"); |
|
|
|
MqRecordMessage mqRecordMessage = getMqRecordMessage(topic, tag, message); |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = saveMessageRecord(mqRecordMessage); |
|
|
|
mqRecordMessage.setId(imgMqMessageRecord.getId()); |
|
|
|
BnyerMessage bnyerMessage = getMqRecordMessage(topic, tag, message); |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = saveMessageRecord(bnyerMessage); |
|
|
|
bnyerMessage.setId(imgMqMessageRecord.getId()); |
|
|
|
//发消息
|
|
|
|
rocketMQTemplate.asyncSend(rocketMQEnhanceTemplate.buildDestination(topic,tag), MessageBuilder.withPayload(mqRecordMessage).build(), new SendCallback() { |
|
|
|
rocketMQTemplate.asyncSend(rocketMQEnhanceTemplate.buildDestination(topic,tag), MessageBuilder.withPayload(bnyerMessage).build(), new SendCallback() { |
|
|
|
@Override |
|
|
|
public void onSuccess(SendResult sendResult) { |
|
|
|
log.info("消息发送成功,topic:{},tag:{},message:{},result:{}",mqRecordMessage.getTopic(),mqRecordMessage.getTag(),JSON.toJSONString(mqRecordMessage), JSON.toJSONString(sendResult)); |
|
|
|
log.info("消息发送成功,topic:{},tag:{},message:{},result:{}", bnyerMessage.getTopic(), bnyerMessage.getTag(),JSON.toJSONString(bnyerMessage), JSON.toJSONString(sendResult)); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public void onException(Throwable throwable) { |
|
|
|
log.error("消息发送失败,topic:{},tag:{},message:{},error:{}",mqRecordMessage.getTopic(),mqRecordMessage.getTag(),JSON.toJSONString(mqRecordMessage),throwable.getMessage()); |
|
|
|
log.error("消息发送失败,topic:{},tag:{},message:{},error:{}", bnyerMessage.getTopic(), bnyerMessage.getTag(),JSON.toJSONString(bnyerMessage),throwable.getMessage()); |
|
|
|
log.info("消息发送失败,更新消息记录,等待定时任务进行消息补偿"); |
|
|
|
editMessageRecordStatus(imgMqMessageRecord.getId(),imgMqMessageRecord.getStatus(),throwable.getMessage()); |
|
|
|
} |
|
|
|
@ -152,18 +150,18 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService |
|
|
|
RocketMQTemplate rocketMQTemplate = rocketMQEnhanceTemplate.getTemplate(); |
|
|
|
//保存消息记录
|
|
|
|
log.info("消息发送中,开始入库本地消息记录表"); |
|
|
|
MqRecordMessage mqRecordMessage = getMqRecordMessage(topic, tag, message); |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = saveMessageRecord(mqRecordMessage); |
|
|
|
mqRecordMessage.setId(imgMqMessageRecord.getId()); |
|
|
|
BnyerMessage bnyerMessage = getMqRecordMessage(topic, tag, message); |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = saveMessageRecord(bnyerMessage); |
|
|
|
bnyerMessage.setId(imgMqMessageRecord.getId()); |
|
|
|
//发消息
|
|
|
|
rocketMQTemplate.asyncSend(rocketMQEnhanceTemplate.buildDestination(topic,tag), MessageBuilder.withPayload(mqRecordMessage).build(), new SendCallback() { |
|
|
|
rocketMQTemplate.asyncSend(rocketMQEnhanceTemplate.buildDestination(topic,tag), MessageBuilder.withPayload(bnyerMessage).build(), new SendCallback() { |
|
|
|
@Override |
|
|
|
public void onSuccess(SendResult sendResult) { |
|
|
|
log.info("消息发送成功,topic:{},tag:{},message:{},result:{}",mqRecordMessage.getTopic(),mqRecordMessage.getTag(),JSON.toJSONString(mqRecordMessage),JSON.toJSONString(sendResult)); |
|
|
|
log.info("消息发送成功,topic:{},tag:{},message:{},result:{}", bnyerMessage.getTopic(), bnyerMessage.getTag(),JSON.toJSONString(bnyerMessage),JSON.toJSONString(sendResult)); |
|
|
|
} |
|
|
|
@Override |
|
|
|
public void onException(Throwable throwable) { |
|
|
|
log.error("消息发送失败,topic:{},tag:{},message:{},error:{}",mqRecordMessage.getTopic(),mqRecordMessage.getTag(),JSON.toJSONString(mqRecordMessage),throwable.getMessage()); |
|
|
|
log.error("消息发送失败,topic:{},tag:{},message:{},error:{}", bnyerMessage.getTopic(), bnyerMessage.getTag(),JSON.toJSONString(bnyerMessage),throwable.getMessage()); |
|
|
|
log.info("消息发送失败,更新消息记录,等待定时任务进行消息补偿"); |
|
|
|
editMessageRecordStatus(imgMqMessageRecord.getId(),imgMqMessageRecord.getStatus(),throwable.getMessage()); |
|
|
|
} |
|
|
|
@ -175,7 +173,7 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService |
|
|
|
* @param message |
|
|
|
*/ |
|
|
|
@Transactional |
|
|
|
public ImgMqMessageRecord saveMessageRecord(MqRecordMessage message){ |
|
|
|
public ImgMqMessageRecord saveMessageRecord(BnyerMessage message){ |
|
|
|
ImgMqMessageRecord imgMqMessageRecord = new ImgMqMessageRecord(); |
|
|
|
imgMqMessageRecord.setStatus(EnumMessageStatus.PROCESS); |
|
|
|
imgMqMessageRecord.setConsumerGroupName(message.getConsumerGroupName()); |
|
|
|
@ -216,7 +214,7 @@ public class ImgMqMessageRecordServiceImpl implements ImgMqMessageRecordService |
|
|
|
String content = imgMqMessageRecord.getContent(); |
|
|
|
JSONObject jsonObject = JSON.parseObject(content); |
|
|
|
String msg = jsonObject.getString("content"); |
|
|
|
MqRecordMessage message = new MqRecordMessage(); |
|
|
|
BnyerMessage message = new BnyerMessage(); |
|
|
|
message.setId(imgMqMessageRecord.getId()); |
|
|
|
message.setReturnTopic(imgMqMessageRecord.getReturnTopic()); |
|
|
|
message.setContent(msg); |
|
|
|
|