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

#
# Attention:
# use this example, you must rename this file name to dataproxy-pulsar.conf,
# and replace the file with the same name in conf directory.
#

agent1.sources = http-source
agent1.channels = ch-msg1 ch-msg2 ch-msg5 ch-msg6
agent1.sinks = pulsar-sink-msg1 pulsar-sink-msg2 pulsar-sink-msg5 pulsar-sink-msg6

agent1.sources.http-source.channels = ch-msg1 ch-msg2 ch-msg5 ch-msg6
agent1.sources.http-source.type = org.apache.inlong.dataproxy.http.SimpleHttpSource
agent1.sources.http-source.message-handler-name = org.apache.inlong.dataproxy.http.SimpleMessageHandler
agent1.sources.http-source.host = 0.0.0.0
agent1.sources.http-source.port = 46802
agent1.sources.http-source.max-msg-length = 524288
#agent1.sources.http-source.topic = persistent://public/default/dataproxy-default-topic
agent1.sources.http-source.attr = m=9
agent1.sources.http-source.connections = 30000
agent1.sources.http-source.max-threads = 64
agent1.sources.http-source.receiveBufferSize = 1048576
agent1.sources.http-source.sendBufferSize = 1048576
agent1.sources.http-source.custom-cp = true
agent1.sources.http-source.selector.type = org.apache.inlong.dataproxy.channel.FailoverChannelSelector
agent1.sources.http-source.selector.master = ch-msg1 ch-msg2
agent1.sources.http-source.metric-recovery-path = ./data/file/recovery
agent1.sources.http-source.metric-agent-port=8003
agent1.sources.http-source.metric-cache-size=1000000
agent1.sources.http-source.set=10

agent1.channels.ch-msg1.type = memory
agent1.channels.ch-msg1.capacity = 10000
agent1.channels.ch-msg1.keep-alive = 0
agent1.channels.ch-msg1.transactionCapacity = 200

agent1.channels.ch-msg2.type = memory
agent1.channels.ch-msg2.capacity = 10000
agent1.channels.ch-msg2.keep-alive = 0
agent1.channels.ch-msg2.transactionCapacity = 200

agent1.channels.ch-msg5.type = file
agent1.channels.ch-msg5.capacity = 100000000
agent1.channels.ch-msg5.maxFileSize = 1073741824
agent1.channels.ch-msg5.minimumRequiredSpace = 1073741824
agent1.channels.ch-msg5.checkpointDir = ./data/file/ch-msg5/check
agent1.channels.ch-msg5.dataDirs = ./data/file/ch-msg5/data
agent1.channels.ch-msg5.fsyncPerTransaction = false
agent1.channels.ch-msg5.fsyncInterval = 10

agent1.channels.ch-msg6.type = file
agent1.channels.ch-msg6.capacity = 100000000
agent1.channels.ch-msg6.maxFileSize = 1073741824
agent1.channels.ch-msg6.minimumRequiredSpace = 1073741824
agent1.channels.ch-msg6.checkpointDir = ./data/file/ch-msg6/check
agent1.channels.ch-msg6.dataDirs = ./data/file/ch-msg6/data
agent1.channels.ch-msg6.fsyncPerTransaction = false
agent1.channels.ch-msg6.fsyncInterval = 10

agent1.sinks.pulsar-sink-msg1.channel = ch-msg1
agent1.sinks.pulsar-sink-msg1.type = org.apache.inlong.dataproxy.sink.PulsarSink

agent1.sinks.pulsar-sink-msg2.channel = ch-msg2
agent1.sinks.pulsar-sink-msg2.type = org.apache.inlong.dataproxy.sink.PulsarSink

agent1.sinks.pulsar-sink-msg5.channel = ch-msg5
agent1.sinks.pulsar-sink-msg5.type = org.apache.inlong.dataproxy.sink.PulsarSink

agent1.sinks.pulsar-sink-msg6.channel = ch-msg6
agent1.sinks.pulsar-sink-msg6.type = org.apache.inlong.dataproxy.sink.PulsarSink