![JAR search and dependency download from the Maven repository](/logo.png)
net.osomahe.esk.config.boundary.ConfigurationBoundary Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eventstore-kafka Show documentation
Show all versions of eventstore-kafka Show documentation
CDI extension for Java EE 8 application using Apache Kafka as Event Store
The newest version!
package net.osomahe.esk.config.boundary;
import static org.apache.kafka.clients.CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG;
import static org.apache.kafka.clients.consumer.ConsumerConfig.AUTO_OFFSET_RESET_CONFIG;
import static org.apache.kafka.clients.consumer.ConsumerConfig.GROUP_ID_CONFIG;
import static org.apache.kafka.clients.producer.ProducerConfig.ACKS_CONFIG;
import java.util.Properties;
import javax.ejb.Stateless;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import org.apache.kafka.clients.consumer.ConsumerConfig;
import net.osomahe.esk.config.entity.KafkaConsumerConfig;
import net.osomahe.esk.config.entity.KafkaProducerConfig;
/**
* Provides configuration for event store publisher and subscriber.
*
* @author Antonin Stoklasek
*/
@Stateless
public class ConfigurationBoundary {
private static final String DEFAULT_KAFKA_URL = "localhost:9092";
private static final String DEFAULT_APPLICATION_ID = "client-application";
@Inject
@KafkaProducerConfig
private Instance instanceProducer;
@Inject
@KafkaConsumerConfig
private Instance instanceConsumer;
@Inject
private Instance instancePublisher;
@Inject
private Instance instanceSubscriber;
/**
* Provides configuration properties for kafka producer.
*
* @return properties for configuration.
*/
public Properties getKafkaProducerConfig() {
if (instancePublisher.isResolvable()) {
return instancePublisher.get().getKafkaProducerConfig();
}
Properties producerConfig = getDefaultProducerConfig();
if (instanceProducer.isResolvable()) {
producerConfig.putAll(instanceProducer.get());
}
return producerConfig;
}
private Properties getDefaultProducerConfig() {
Properties props = new Properties();
props.put(BOOTSTRAP_SERVERS_CONFIG, DEFAULT_KAFKA_URL);
props.put(ACKS_CONFIG, "all");
return props;
}
/**
* Provides configuration properties for kafka consumer.
*
* @return properties for configuration.
*/
public Properties getKafkaConsumerConfig() {
if (instanceSubscriber.isResolvable()) {
return instanceSubscriber.get().getKafkaConsumerConfig();
}
Properties consumerConfig = getDefaultConsumerConfig();
if (instanceConsumer.isResolvable()) {
consumerConfig.putAll(instanceConsumer.get());
}
return consumerConfig;
}
private Properties getDefaultConsumerConfig() {
Properties props = new Properties();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, DEFAULT_KAFKA_URL);
props.put(GROUP_ID_CONFIG, DEFAULT_APPLICATION_ID);
props.put(AUTO_OFFSET_RESET_CONFIG, "earliest");
return props;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy