;
; 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.
;

[broker]
; unique id of broker server, required; when set to 0, TubeMQ will retrieve
; localhost IP, convert to int and set as brokerID
brokerId=1
; default network interface used to get localhost IP, optional; default is eth1
;defEthName=eth1
; hostname of broker server, required
hostName=127.0.0.1
; port that broker server listens to, optional; default is 8123
port=8123
webPort=8081
; address list of master HA servers
masterAddressList=127.0.0.1:8715
; path to message files
primaryPath=var/stage/metadata_1
; maximum size of single data file; default is 512M
maxSegmentSize=1073741824
; maximum size of single index file; default is 18M
maxIndexSegmentSize=22020096
; maximum buffer size that transferred to client; default is 512K
transferSize= 524288
; boolean flag on whether load message stores in parallel on bootstrap
loadMessageStoresInParallel=true
; timeout of consumer heartbeat, optional; default is 30s
consumerRegTimeoutMs=35000


[zookeeper]
; root path of TubeMQ znodes on ZK
zkNodeRoot=/tubemq
; connect string of ZK servers
zkServerAddr=localhost:2181
; timeout of ZK heartbeat; default is 30000ms
zkSessionTimeoutMs=30000
; timeout of ZK connection; default is 30000ms
zkConnectionTimeoutMs=30000
; sync time on ZK; default is 5000ms
zkSyncTimeMs=5000
; interval to commits data on ZK; default is 5000ms
zkCommitPeriodMs=5000
; maximum retry times when commits data on ZK fails
zkCommitFailRetries=10

[audit]
; whether to enable data report by audit sdk
auditEnable=false
; audit proxy server addresses, default is '127.0.0.1:10081'
auditProxyAddr=127.0.0.1:10081
; file path for audit cache data
auditCacheFilePath=/data/inlong/audit
; max cache records for audit cache
auditCacheMaxRows=2000000
; audit id for production
auditIdProduce=9
; audit id for consumption
auditIdConsume=10

[prometheus]
; whether to enable prometheus service
promEnable=false
; port that prometheus listens to, optional, default is 9081
promHttpPort=9081
; cluster name which the node belong to
promClusterName=InLong
