|
|
@@ -1,10 +1,17 @@
|
|
|
package org.dromara.backstage.mq;
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.kafka.clients.producer.ProducerRecord;
|
|
|
+import org.dromara.common.message.kafka.domain.KafkaHeader;
|
|
|
+import org.dromara.common.message.kafka.domain.KafkaMessage;
|
|
|
import org.springframework.kafka.core.KafkaTemplate;
|
|
|
+import org.springframework.kafka.support.SendResult;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.util.concurrent.CompletableFuture;
|
|
|
+
|
|
|
@RequiredArgsConstructor
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
@@ -24,4 +31,32 @@ public class KafkaProducer {
|
|
|
log.debug("发送消息到kafka消息系统结束");
|
|
|
}
|
|
|
|
|
|
+ public void sendSyncData(String topic, KafkaMessage<?> data){
|
|
|
+ try{
|
|
|
+ KafkaHeader header = data.getHeader();
|
|
|
+ String eventId = header.getEventId();
|
|
|
+ String sender = header.getSender();
|
|
|
+ String eventType = header.getEventType();
|
|
|
+ String tenantId = header.getTenantId();
|
|
|
+ String jsonMessage = JSON.toJSONString(data);
|
|
|
+ ProducerRecord<String, String> record = new ProducerRecord<>(topic, "YKT-SYNC-Message", jsonMessage);
|
|
|
+ log.info("发送同步数据到kafka消息系统, data: " + jsonMessage);
|
|
|
+ CompletableFuture<SendResult<String, String>> send = kafkaTemplate.send(record);
|
|
|
+ send.whenComplete((result, ex) -> {
|
|
|
+ if (ex != null) {
|
|
|
+ log.error("同步数据发送到kafka消息系统异常,data: " + jsonMessage, ex);
|
|
|
+
|
|
|
+
|
|
|
+ // todo 异常信息入库
|
|
|
+ } else {
|
|
|
+ log.info("同步数据发送到kafka消息系统成功,data: " + jsonMessage);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("同步数据发送到kafka消息系统异常,data: " + data, e);
|
|
|
+ // todo 异常信息入库
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|