# 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.
# see kafka.server.KafkaConfig for additional details and defaults

# the id of the broker
brokerid=3

# hostname of broker. If not set, will pick up from the value returned
# from getLocalHost.  If there are multiple interfaces getLocalHost
# may not be what you want.
# hostname=

# number of logical partitions on this broker
num.partitions=1

# the port the socket server runs on
port=9093

# the number of processor threads the socket server uses. Defaults to the number of cores on the machine
num.threads=8

# the directory in which to store log files
log.dir=/tmp/kafka-source3-logs

# the send buffer used by the socket server 
socket.send.buffer=1048576

# the receive buffer used by the socket server
socket.receive.buffer=1048576

# the maximum size of a log segment
log.file.size=10000000

# the interval between running cleanup on the logs
log.cleanup.interval.mins=1

# the minimum age of a log file to eligible for deletion
log.retention.hours=168

#the number of messages to accept without flushing the log to disk
log.flush.interval=600

#set the following properties to use zookeeper

# enable connecting to zookeeper
enable.zookeeper=true

# zk connection string
# comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002"
zk.connect=localhost:2181

# timeout in ms for connecting to zookeeper
zk.connectiontimeout.ms=1000000

# time based topic flush intervals in ms
#topic.flush.intervals.ms=topic:1000

# default time based flush interval in ms
log.default.flush.interval.ms=1000

# time based topic flasher time rate in ms
log.default.flush.scheduler.interval.ms=1000

# set sendBufferSize
send.buffer.size=500000

# set receiveBufferSize
receive.buffer.size=500000

