From 150a13824bb3dcd6371fb63fc5b6c5bcb9419328 Mon Sep 17 00:00:00 2001 From: mcy Date: Thu, 27 Dec 2018 17:52:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20kafka=20=E5=BC=82=E6=AD=A5?= =?UTF-8?q?=E5=8F=91=E9=80=81=20flat=20message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../otter/canal/kafka/CanalKafkaProducer.java | 65 ++++++++----------- 1 file changed, 27 insertions(+), 38 deletions(-) diff --git a/server/src/main/java/com/alibaba/otter/canal/kafka/CanalKafkaProducer.java b/server/src/main/java/com/alibaba/otter/canal/kafka/CanalKafkaProducer.java index 8ac94218..64243dcb 100644 --- a/server/src/main/java/com/alibaba/otter/canal/kafka/CanalKafkaProducer.java +++ b/server/src/main/java/com/alibaba/otter/canal/kafka/CanalKafkaProducer.java @@ -124,6 +124,7 @@ public class CanalKafkaProducer implements CanalMQProducer { } if (record != null) { + // 同步发送原生message producer.send(record).get(); if (logger.isDebugEnabled()) { @@ -141,13 +142,17 @@ public class CanalKafkaProducer implements CanalMQProducer { List flatMessages = MQMessageUtils.messageConverter(message); if (flatMessages != null) { for (FlatMessage flatMessage : flatMessages) { - if (canalDestination.getPartition() != null) { + if (StringUtils.isEmpty(canalDestination.getPartitionHash())) { try { + Integer partition = canalDestination.getPartition(); + if (partition == null) { + partition = 0; + } ProducerRecord record = new ProducerRecord(topicName, - canalDestination.getPartition(), + partition, null, JSON.toJSONString(flatMessage, SerializerFeature.WriteMapNullValue)); - producer2.send(record).get(); + producer2.send(record); } catch (Exception e) { logger.error(e.getMessage(), e); // producer.abortTransaction(); @@ -155,43 +160,27 @@ public class CanalKafkaProducer implements CanalMQProducer { return; } } else { - if (canalDestination.getPartitionHash() != null - && !canalDestination.getPartitionHash().isEmpty()) { - FlatMessage[] partitionFlatMessage = MQMessageUtils.messagePartition(flatMessage, - canalDestination.getPartitionsNum(), - canalDestination.getPartitionHash()); - int length = partitionFlatMessage.length; - for (int i = 0; i < length; i++) { - FlatMessage flatMessagePart = partitionFlatMessage[i]; - if (flatMessagePart != null) { - try { - ProducerRecord record = new ProducerRecord( - topicName, - i, - null, - JSON.toJSONString(flatMessagePart, SerializerFeature.WriteMapNullValue)); - producer2.send(record).get(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - // producer.abortTransaction(); - callback.rollback(); - return; - } + FlatMessage[] partitionFlatMessage = MQMessageUtils.messagePartition(flatMessage, + canalDestination.getPartitionsNum(), + canalDestination.getPartitionHash()); + int length = partitionFlatMessage.length; + for (int i = 0; i < length; i++) { + FlatMessage flatMessagePart = partitionFlatMessage[i]; + if (flatMessagePart != null) { + try { + ProducerRecord record = new ProducerRecord( + topicName, + i, + null, + JSON.toJSONString(flatMessagePart, SerializerFeature.WriteMapNullValue)); + producer2.send(record); + } catch (Exception e) { + logger.error(e.getMessage(), e); + // producer.abortTransaction(); + callback.rollback(); + return; } } - } else { - try { - ProducerRecord record = new ProducerRecord(topicName, - 0, - null, - JSON.toJSONString(flatMessage, SerializerFeature.WriteMapNullValue)); - producer2.send(record).get(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - // producer.abortTransaction(); - callback.rollback(); - return; - } } } if (logger.isDebugEnabled()) {