|
@@ -7,10 +7,13 @@ import cn.hutool.json.JSONUtil;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
|
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
|
|
|
|
+import org.dromara.backstage.api.domain.bo.RemoteSendMessageRecordBo;
|
|
|
import org.dromara.common.core.config.DefaultConfig;
|
|
import org.dromara.common.core.config.DefaultConfig;
|
|
|
import org.dromara.common.core.utils.SpringUtils;
|
|
import org.dromara.common.core.utils.SpringUtils;
|
|
|
import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
|
|
import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
|
|
|
|
|
+import org.dromara.common.message.kafka.domain.KafkaHeader;
|
|
|
import org.dromara.common.message.kafka.domain.KafkaMessage;
|
|
import org.dromara.common.message.kafka.domain.KafkaMessage;
|
|
|
|
|
+import org.dromara.server.base.service.yktOperation.SyncRemoteSendMessageRecordService;
|
|
|
import org.dromara.server.mq.event.kafka.IYktEventStrategy;
|
|
import org.dromara.server.mq.event.kafka.IYktEventStrategy;
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
|
|
import org.springframework.kafka.annotation.KafkaListener;
|
|
import org.springframework.kafka.annotation.KafkaListener;
|
|
@@ -32,6 +35,7 @@ import org.springframework.stereotype.Component;
|
|
|
@ConditionalOnExpression("'cloud'.equals('${locationFlag}')")
|
|
@ConditionalOnExpression("'cloud'.equals('${locationFlag}')")
|
|
|
public class KafkaCloudConsumer {
|
|
public class KafkaCloudConsumer {
|
|
|
private final DefaultConfig defaultConfig;
|
|
private final DefaultConfig defaultConfig;
|
|
|
|
|
+ private final SyncRemoteSendMessageRecordService syncRemoteSendMessageRecordService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* eventBus主题监听 第三方对接相关
|
|
* eventBus主题监听 第三方对接相关
|
|
@@ -59,6 +63,22 @@ public class KafkaCloudConsumer {
|
|
|
doMessageHandle(receiveMsg);
|
|
doMessageHandle(receiveMsg);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 初始化消息记录Bo
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param consumeStatus 消费状态
|
|
|
|
|
+ */
|
|
|
|
|
+ private static RemoteSendMessageRecordBo initBo(KafkaMessage<?> msg, String consumeStatus) {
|
|
|
|
|
+ RemoteSendMessageRecordBo bo = new RemoteSendMessageRecordBo();
|
|
|
|
|
+ KafkaHeader header = msg.getHeader();
|
|
|
|
|
+ bo.setEventId(header.getEventId());
|
|
|
|
|
+ bo.setSender(header.getSender());
|
|
|
|
|
+ bo.setEventType(header.getEventType());
|
|
|
|
|
+ bo.setMessage(msg.getBody().toString());
|
|
|
|
|
+ bo.setConsumeStatus(consumeStatus);
|
|
|
|
|
+ return bo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 公用消息消费处理事件
|
|
* 公用消息消费处理事件
|
|
|
*
|
|
*
|
|
@@ -85,8 +105,18 @@ public class KafkaCloudConsumer {
|
|
|
}
|
|
}
|
|
|
IYktEventStrategy eventStrategy = SpringUtils.getBean(sender, IYktEventStrategy.class);
|
|
IYktEventStrategy eventStrategy = SpringUtils.getBean(sender, IYktEventStrategy.class);
|
|
|
eventStrategy.doMsgHandle(eventType, eventMsg);
|
|
eventStrategy.doMsgHandle(eventType, eventMsg);
|
|
|
|
|
+ try {
|
|
|
|
|
+ syncRemoteSendMessageRecordService.insertSendMessageRecord(initBo(receiveMsg, "Y"));
|
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
|
+ log.error("消息发送记录更新失败", ex);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ syncRemoteSendMessageRecordService.insertSendMessageRecord(initBo(receiveMsg, "N"));
|
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
|
+ log.error("消息发送记录更新失败", ex);
|
|
|
|
|
+ }
|
|
|
log.error("[kafka消息处理失败]-[消息:{}-[错误:]", receiveMsg, e);
|
|
log.error("[kafka消息处理失败]-[消息:{}-[错误:]", receiveMsg, e);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|