All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.geektool.kafka.admin.KafkaBuilder Maven / Gradle / Ivy

The newest version!
package cn.geektool.kafka.admin;

import cn.geektool.kafka.admin.bean.KafkaInfo;
import cn.geektool.kafka.consumer.bean.ConsumerBean;
import cn.geektool.kafka.producer.bean.ProducerBean;
import cn.geektool.core.builder.BaseBuilder;

/**
 * kafka构建工具
 *
 * @author jiangdi
 * @since 0.0.1
 */
public class KafkaBuilder {

    /**
     * 获取kafka builder工具
     *
     * @return 构造器
     */
    public static Builder builder() {
        return new Builder();
    }

    /**
     * 生产者构建
     */
    public static class ProducerBuilder implements BaseBuilder {

        private ProducerBean producer;

        ProducerBuilder() {
            producer = new ProducerBean();
        }

        /**
         * 是否开启当前的生产者 默认不开启
         *
         * @param enable 开启
         * @return ProducerBuilder
         */
        public ProducerBuilder enable(boolean enable) {
            this.producer.setEnable(enable);
            return this;
        }

        /**
         * 设置生产者服务、不设置根据通用的进行配置(通用默认是本地127.0.0.1:9200)
         *
         * @param servers 服务ip端口
         * @return ProducerBuilder
         */
        public ProducerBuilder servers(String servers) {
            this.producer.setServers(servers);
            return this;
        }

        /**
         * 设置生产序列化key的类、默认apache string的序列化类
         *
         * @param keySerializer 序列化
         * @return ProducerBuilder
         */
        public ProducerBuilder keySerializer(String keySerializer) {
            this.producer.setKeySerializer(keySerializer);
            return this;
        }

        /**
         * 设置生产序列化value的类、默认apache string的序列化类
         *
         * @param valueSerializer 序列化
         * @return ProducerBuilder
         */
        public ProducerBuilder valueSerializer(String valueSerializer) {
            this.producer.setValueSerializer(valueSerializer);
            return this;
        }

        /**
         * 设置应答、默认all
         *
         * @param acks 应答
         * @return ProducerBuilder
         */
        public ProducerBuilder acks(String acks) {
            this.producer.setAcks(acks);
            return this;
        }

        public ProducerBuilder retries(String retries) {
            this.producer.setRetries(retries);
            return this;
        }

        public ProducerBuilder batchSize(Integer batchSize) {
            this.producer.setBatchSize(batchSize);
            return this;
        }

        public ProducerBuilder lingerMs(Integer lingerMs) {
            this.producer.setLingerMs(lingerMs);
            return this;
        }

        public ProducerBuilder bufferMemory(Long bufferMemory) {
            this.producer.setBufferMemory(bufferMemory);
            return this;
        }

        public ProducerBuilder partitionerClass(String partitionerClass) {
            this.producer.setPartitionerClass(partitionerClass);
            return this;
        }

        @Override
        public ProducerBean builder() {
            return this.producer;
        }
    }

    /**
     * 消费者构建
     */
    public static class ConsumerBuilder implements BaseBuilder {

        private ConsumerBean consumer;

        ConsumerBuilder() {
            this.consumer = new ConsumerBean();
        }

        public ConsumerBuilder enable(boolean enable) {
            this.consumer.setEnable(enable);
            return this;
        }

        public ConsumerBuilder servers(String servers) {
            this.consumer.setServers(servers);
            return this;
        }

        public ConsumerBuilder keyDeserializer(String keyDeserializer) {
            this.consumer.setKeyDeserializer(keyDeserializer);
            return this;
        }

        public ConsumerBuilder valueDeserializer(String valueDeserializer) {
            this.consumer.setValueDeserializer(valueDeserializer);
            return this;
        }

        public ConsumerBuilder invokeBeanName(String invokeBeanName) {
            this.consumer.setInvokeBeanName(invokeBeanName);
            return this;
        }

        public ConsumerBuilder invokeMethodName(String invokeMethodName) {
            this.consumer.setInvokeMethodName(invokeMethodName);
            return this;
        }

        public ConsumerBuilder invokeCallback(String invokeCallback) {
            this.consumer.setInvokeCallback(invokeCallback);
            return this;
        }

        public ConsumerBuilder topics(String topics) {
            this.consumer.setTopics(topics);
            return this;
        }

        public ConsumerBuilder groupId(String groupId) {
            this.consumer.setGroupId(groupId);
            return this;
        }

        public ConsumerBuilder groupName(String groupName) {
            this.consumer.setGroupName(groupName);
            return this;
        }

        public ConsumerBuilder pull(Long pull) {
            this.consumer.setPull(pull);
            return this;
        }

        public ConsumerBuilder threadPartitionNum(Integer threadPartitionNum) {
            this.consumer.setThreadPartitionNum(threadPartitionNum);
            return this;
        }

        public ConsumerBuilder enableAutoCommit(Boolean enableAutoCommit) {
            this.consumer.setEnableAutoCommit(enableAutoCommit);
            return this;
        }

        public ConsumerBuilder autoCommitIntervalMs(Integer autoCommitIntervalMs) {
            this.consumer.setAutoCommitIntervalMs(autoCommitIntervalMs);
            return this;
        }

        public ConsumerBuilder sessionTimeOutMs(Integer sessionTimeOutMs) {
            this.consumer.setSessionTimeOutMs(sessionTimeOutMs);
            return this;
        }

        public ConsumerBuilder autoOffsetReset(String autoOffsetReset) {
            this.consumer.setAutoOffsetReset(autoOffsetReset);
            return this;
        }

        @Override
        public ConsumerBean builder() {
            return this.consumer;
        }
    }

    /**
     * 全局构建
     */
    public static class Builder implements BaseBuilder {

        /**
         * 对应的通用服务
         */
        private KafkaInfo info;

        public Builder() {
            info = new KafkaInfo();
        }

        public Builder servers(String servers) {
            info.setServers(servers);
            return this;
        }

        public Builder keySerializer(String keySerializer) {
            info.setKeySerializer(keySerializer);
            return this;
        }

        public Builder valueSerializer(String valueSerializer) {
            info.setValueSerializer(valueSerializer);
            return this;
        }

        public Builder keyDeserializer(String keyDeserializer) {
            info.setKeyDeserializer(keyDeserializer);
            return this;
        }

        public Builder valueDeserializer(String valueDeserializer) {
            info.setValueDeserializer(valueDeserializer);
            return this;
        }

        public Builder enableProducer(Boolean enableProducer) {
            info.setEnableProducer(enableProducer);
            return this;
        }

        public Builder enableConsumer(Boolean enableConsumer) {
            info.setEnableConsumer(enableConsumer);
            return this;
        }

        public Builder bindProducer(String key, ProducerBean value) {
            info.getProducerMap().put(key, value);
            return this;
        }

        public Builder bindConsumer(String key, ConsumerBean value) {
            info.getConsumerMap().put(key, value);
            return this;
        }

        public ProducerBuilder createProducerBuilder() {
            return new ProducerBuilder();
        }

        public ConsumerBuilder createConsumerBuilder() {
            return new ConsumerBuilder();
        }

        @Override
        public KafkaFramework builder() {
            return new KafkaFramework(info);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy