Class KafkaDataConnection
- All Implemented Interfaces:
DataConnection
DataConnection implementation for Kafka.
KafkaDataConnection is usable both for sources and sinks.
Sources obtain KafkaConsumer instances using newConsumer().
Because the KafkaConsumer is not thread-safe so the DataConnection is used only
to keep the connection metadata. A new instance is returned each time this
method is called.
Sinks obtain KafkaProducer instances using getProducer(String).
The producer instance may be either shared or single-use depending on the
DataConnectionConfig.isShared() setting. Shared producer instance is limited
to use with either no processing guarantees or at-least-once processing guarantees.
Use with exactly-once is not possible.
The properties must be configured for both consumers and producers.
- Since:
- 5.3
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddestroy()<K,V> org.apache.kafka.clients.producer.KafkaProducer<K, V> getProducer(String transactionalId) Returns an instance ofKafkaProducerbased on the DataConnection configuration.<K,V> org.apache.kafka.clients.producer.KafkaProducer<K, V> getProducer(String transactionalId, Properties properties) Returns an instance ofKafkaProducerbased on the DataConnection configuration and given properties.<K,V> org.apache.kafka.clients.consumer.Consumer<K, V> Creates new instance ofKafkaConsumerbased on the DataConnection configuration.<K,V> org.apache.kafka.clients.consumer.Consumer<K, V> newConsumer(Properties properties) Creates new instance ofKafkaConsumerbased on the DataConnection configuration and given properties parameter.Methods inherited from class com.hazelcast.dataconnection.DataConnectionBase
getConfig, getName, release, retainMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.hazelcast.dataconnection.DataConnection
options
-
Constructor Details
-
KafkaDataConnection
CreateKafkaDataConnectionbased on given config
-
-
Method Details
-
listResources
-
resourceTypes
-
newConsumer
@Nonnull public <K,V> org.apache.kafka.clients.consumer.Consumer<K,V> newConsumer()Creates new instance ofKafkaConsumerbased on the DataConnection configuration. Always creates a new instance of the consumer becauseKafkaConsumeris not thread-safe. The caller is responsible for closing the consumer instance.- Returns:
- consumer instance
-
newConsumer
@Nonnull public <K,V> org.apache.kafka.clients.consumer.Consumer<K,V> newConsumer(Properties properties) Creates new instance ofKafkaConsumerbased on the DataConnection configuration and given properties parameter. Always creates a new instance of the consumer becauseKafkaConsumeris not thread-safe. The caller is responsible for closing the consumer instance.- Parameters:
properties- mapping properties to merge with data connection options.- Returns:
- consumer instance
-
getProducer
@Nonnull public <K,V> org.apache.kafka.clients.producer.KafkaProducer<K,V> getProducer(@Nullable String transactionalId) Returns an instance ofKafkaProducerbased on the DataConnection configuration.The caller is responsible for closing the producer instance. For non-shared producers the producer will be closed immediately upon calling close. For shared producers the producer will be closed when all users close the returned instance and this DataConnection is released by calling
DataConnectionBase.release()- Parameters:
transactionalId- transaction id to pass as 'transactional.id' property to a new KafkaProducer instance, must be null for shared producer
-
getProducer
@Nonnull public <K,V> org.apache.kafka.clients.producer.KafkaProducer<K,V> getProducer(@Nullable String transactionalId, @Nonnull Properties properties) Returns an instance ofKafkaProducerbased on the DataConnection configuration and given properties.The caller is responsible for closing the producer instance. For non-shared producers the producer will be closed immediately upon calling close. For shared producers the producer will be closed when all users close the returned instance and this DataConnection is released by calling
DataConnectionBase.release()- Parameters:
transactionalId- transaction id to pass as 'transactional.id' property to a new KafkaProducer instance, must be null for shared producerproperties- properties. E.g, SQL mappings provide separate options, and they should be merged with data connection's properties. These properties have higher priority than data connection properties. IfKafkaDataConnectionis shared, thenHazelcastExceptionwould be thrown.
-
destroy
public void destroy()
-