Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: shtykh_roman <rshtykh@yahoo.com>
- Loading branch information
Showing
16 changed files
with
1,156 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
81 changes: 81 additions & 0 deletions
81
...les/kafka/src/main/java/org/apache/ignite/stream/kafka/connect/IgniteSourceConnector.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,81 @@ | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||
* contributor license agreements. See the NOTICE file distributed with | |||
* this work for additional information regarding copyright ownership. | |||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||
* (the "License"); you may not use this file except in compliance with | |||
* the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
*/ | |||
|
|||
package org.apache.ignite.stream.kafka.connect; | |||
|
|||
import java.util.ArrayList; | |||
import java.util.HashMap; | |||
import java.util.List; | |||
import java.util.Map; | |||
import org.apache.ignite.internal.util.typedef.internal.A; | |||
import org.apache.kafka.common.utils.AppInfoParser; | |||
import org.apache.kafka.connect.connector.Task; | |||
import org.apache.kafka.connect.errors.ConnectException; | |||
import org.apache.kafka.connect.source.SourceConnector; | |||
|
|||
/** | |||
* Source connector to manage source tasks that listens to registered Ignite grid events and forward them to Kafka. | |||
* | |||
* Note that only cache events are enabled for streaming. | |||
*/ | |||
public class IgniteSourceConnector extends SourceConnector { | |||
/** Source properties. */ | |||
private Map<String, String> configProps; | |||
|
|||
/** {@inheritDoc} */ | |||
@Override public String version() { | |||
return AppInfoParser.getVersion(); | |||
} | |||
|
|||
/** {@inheritDoc} */ | |||
@Override public void start(Map<String, String> props) { | |||
try { | |||
A.notNullOrEmpty(props.get(IgniteSourceConstants.CACHE_NAME), "cache name"); | |||
A.notNullOrEmpty(props.get(IgniteSourceConstants.CACHE_CFG_PATH), "path to cache config file"); | |||
A.notNullOrEmpty(props.get(IgniteSourceConstants.CACHE_EVENTS), "Registered cache events"); | |||
A.notNullOrEmpty(props.get(IgniteSourceConstants.TOPIC_NAMES), "Kafka topics"); | |||
} | |||
catch (IllegalArgumentException e) { | |||
throw new ConnectException("Cannot start IgniteSourceConnector due to configuration error", e); | |||
} | |||
|
|||
configProps = props; | |||
} | |||
|
|||
/** {@inheritDoc} */ | |||
@Override public Class<? extends Task> taskClass() { | |||
return IgniteSourceTask.class; | |||
} | |||
|
|||
/** {@inheritDoc} */ | |||
@Override public List<Map<String, String>> taskConfigs(int maxTasks) { | |||
List<Map<String, String>> taskConfigs = new ArrayList<>(); | |||
Map<String, String> taskProps = new HashMap<>(); | |||
|
|||
taskProps.putAll(configProps); | |||
|
|||
for (int i = 0; i < maxTasks; i++) | |||
taskConfigs.add(taskProps); | |||
|
|||
return taskConfigs; | |||
} | |||
|
|||
/** {@inheritDoc} */ | |||
@Override public void stop() { | |||
// No-op. | |||
} | |||
} |
44 changes: 44 additions & 0 deletions
44
...les/kafka/src/main/java/org/apache/ignite/stream/kafka/connect/IgniteSourceConstants.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,44 @@ | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one or more | |||
* contributor license agreements. See the NOTICE file distributed with | |||
* this work for additional information regarding copyright ownership. | |||
* The ASF licenses this file to You under the Apache License, Version 2.0 | |||
* (the "License"); you may not use this file except in compliance with | |||
* the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
*/ | |||
|
|||
package org.apache.ignite.stream.kafka.connect; | |||
|
|||
/** | |||
* Sink configuration strings. | |||
*/ | |||
public class IgniteSourceConstants { | |||
/** Ignite configuration file path. */ | |||
public static final String CACHE_CFG_PATH = "igniteCfg"; | |||
|
|||
/** Cache name. */ | |||
public static final String CACHE_NAME = "cacheName"; | |||
|
|||
/** Events to be listened to. Names corresponds to {@link IgniteSourceTask.CacheEvt}. */ | |||
public static final String CACHE_EVENTS = "cacheEvts"; | |||
|
|||
/** Internal buffer size. */ | |||
public static final String INTL_BUF_SIZE = "evtBufferSize"; | |||
|
|||
/** Size of one chunk drained from the internal buffer. */ | |||
public static final String INTL_BATCH_SIZE = "evtBatchSize"; | |||
|
|||
/** User-defined filter class. */ | |||
public static final String CACHE_FILTER_CLASS = "cacheFilterCls"; | |||
|
|||
/** Kafka topic. */ | |||
public static final String TOPIC_NAMES = "topicNames"; | |||
} |
Oops, something went wrong.