|
4 | 4 | import com.bkatwal.kafkaproject.utils.SolrSinkService;
|
5 | 5 | import org.apache.kafka.clients.consumer.OffsetAndMetadata;
|
6 | 6 | import org.apache.kafka.common.TopicPartition;
|
| 7 | +import org.apache.kafka.connect.data.Schema; |
7 | 8 | import org.apache.kafka.connect.sink.SinkRecord;
|
8 | 9 | import org.apache.kafka.connect.sink.SinkTask;
|
9 |
| -import org.apache.solr.client.solrj.response.UpdateResponse; |
10 | 10 | import org.slf4j.Logger;
|
11 | 11 | import org.slf4j.LoggerFactory;
|
12 | 12 |
|
@@ -39,31 +39,37 @@ public void put(Collection<SinkRecord> kafkaRecords) {
|
39 | 39 | for (SinkRecord record : kafkaRecords) {
|
40 | 40 | String id = record.key() != null ? record.key().toString() : null;
|
41 | 41 |
|
| 42 | + Schema valueSchema = record.valueSchema(); |
42 | 43 |
|
43 |
| - if (record.value() == null) { |
44 |
| - log.error("No value passed for doc ID, {}", id); |
45 |
| - continue; |
46 |
| - } |
| 44 | + //not a plain json data/schema less data |
| 45 | + //Expecting schema less record |
| 46 | + //TODO handle schema based record later |
| 47 | + if (valueSchema == null) { |
| 48 | + |
| 49 | + if (record.value() == null) { |
| 50 | + log.error("No value passed for doc ID, {}", id); |
| 51 | + continue; |
| 52 | + } |
47 | 53 |
|
48 |
| - UpdateResponse updateResponse; |
49 |
| - Map<String, Object> jsonValueMap = (Map<String, Object>) record.value(); |
| 54 | + Map<String, Object> jsonValueMap = (Map<String, Object>) record.value(); |
50 | 55 |
|
51 |
| - Object delVal = jsonValueMap.get("_delete_"); |
| 56 | + Object delVal = jsonValueMap.get("_delete_"); |
52 | 57 |
|
53 |
| - //delete the field "_delete_" after reading the value from it |
54 |
| - jsonValueMap.remove("_delete_"); |
| 58 | + //delete the field "_delete_" after reading the value from it |
| 59 | + jsonValueMap.remove("_delete_"); |
55 | 60 |
|
56 |
| - //if _delete_ is passed in doc and is false, will try to delete doc |
57 |
| - if (isDeleteRequest(delVal)) { |
58 |
| - sinkService.deleteById(id); |
59 |
| - } else { |
60 |
| - try { |
61 |
| - sinkService.insert(id, record); |
62 |
| - } catch (InvalidObjectException e) { |
63 |
| - e.printStackTrace(); |
| 61 | + //if _delete_ is passed in doc and is false, will try to delete doc |
| 62 | + if (isDeleteRequest(delVal)) { |
| 63 | + sinkService.deleteById(id); |
| 64 | + } else { |
| 65 | + try { |
| 66 | + sinkService.insert(id, record); |
| 67 | + } catch (InvalidObjectException e) { |
| 68 | + e.printStackTrace(); |
| 69 | + } |
64 | 70 | }
|
65 | 71 | }
|
66 |
| - |
| 72 | + log.error("Check if record in topic is plain json data and value is schema less. Set schema.enable=false for value."); |
67 | 73 |
|
68 | 74 | }
|
69 | 75 |
|
|
0 commit comments