#
# 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:
# in this example, use dataproxy.conf as file name,
# In addition, if you want to keep the order of messages,
# in addition configuring the properties to order when sending,
# you must configure separate channels and sinks for sequential messages,
# and config order property in source module in dataproxy.
#

agent1.sources = tcp-source http-source
agent1.channels = ch-msg1 ch-msg2 ch-msg3 ch-msg5 ch-msg6
agent1.sinks = mq-sink-msg1 mq-sink-msg2 mq-sink-msg3 mq-sink-msg5 mq-sink-msg6

# For example:
# For order message, ch-msg3 and mq-sink-msg3 must be configured
# agent1.channels = ch-msg1 ch-msg2 ch-msg3 ch-msg5 ch-msg6
# agent1.sinks = mq-sink-msg1 mq-sink-msg2 mq-sink-msg3 mq-sink-msg5 mq-sink-msg6

# tcp-source
agent1.sources.tcp-source.channels = ch-msg1 ch-msg2 ch-msg3 ch-msg5 ch-msg6
agent1.sources.tcp-source.type = org.apache.inlong.dataproxy.source.SimpleTcpSource
agent1.sources.tcp-source.msg-factory-name = org.apache.inlong.dataproxy.source.ServerMessageFactory
# replace it with the ip you specified
agent1.sources.tcp-source.host = localhost
agent1.sources.tcp-source.port = 46801
agent1.sources.tcp-source.max-msg-length = 524288
# agent1.sources.tcp-source.topic = persistent://public/default/dataproxy-default-topic
agent1.sources.tcp-source.attr = m=9
agent1.sources.tcp-source.connections = 30000
agent1.sources.tcp-source.max-threads = 64
agent1.sources.tcp-source.receiveBufferSize = 8388608
agent1.sources.tcp-source.sendBufferSize = 8388608
agent1.sources.tcp-source.custom-cp = true
agent1.sources.tcp-source.selector.type = org.apache.inlong.dataproxy.channel.FailoverChannelSelector
agent1.sources.tcp-source.selector.master = ch-msg1 ch-msg2
# For order message
agent1.sources.tcp-source.selector.order = ch-msg3
agent1.sources.tcp-source.metric-recovery-path = ./data/file/recovery
agent1.sources.tcp-source.metric-agent-port = 8003
agent1.sources.tcp-source.metric-cache-size = 1000000
agent1.sources.tcp-source.set = 10
agent1.sources.tcp-source.max-monitor-cnt=500000

# http-source
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
# replace it with the ip you specified
agent1.sources.http-source.host = localhost
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.sources.http-source.max-monitor-cnt=500000

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

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

# For order message
agent1.channels.ch-msg3.type = memory
agent1.channels.ch-msg3.capacity = 10000
agent1.channels.ch-msg3.keep-alive = 0
agent1.channels.ch-msg3.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.mq-sink-msg1.channel = ch-msg1
agent1.sinks.mq-sink-msg1.type = org.apache.inlong.dataproxy.sink.mq.MessageQueueZoneSink
agent1.sinks.mq-sink-msg1.maxThreads = 1
agent1.sinks.mq-sink-msg1.max-monitor-cnt=500000

agent1.sinks.mq-sink-msg2.channel = ch-msg2
agent1.sinks.mq-sink-msg2.type = org.apache.inlong.dataproxy.sink.mq.MessageQueueZoneSink
agent1.sinks.mq-sink-msg2.maxThreads = 1
agent1.sinks.mq-sink-msg2.max-monitor-cnt=500000

# For order message
agent1.sinks.mq-sink-msg3.channel = ch-msg3
agent1.sinks.mq-sink-msg3.type = org.apache.inlong.dataproxy.sink.mq.MessageQueueZoneSink
agent1.sinks.mq-sink-msg3.maxThreads = 1
agent1.sinks.mq-sink-msg3.max-monitor-cnt=500000

agent1.sinks.mq-sink-msg5.channel = ch-msg5
agent1.sinks.mq-sink-msg5.type = org.apache.inlong.dataproxy.sink.mq.MessageQueueZoneSink
agent1.sinks.mq-sink-msg5.maxThreads = 1
agent1.sinks.mq-sink-msg5.max-monitor-cnt=500000

agent1.sinks.mq-sink-msg6.channel = ch-msg6
agent1.sinks.mq-sink-msg6.type = org.apache.inlong.dataproxy.sink.mq.MessageQueueZoneSink
agent1.sinks.mq-sink-msg6.maxThreads = 1
agent1.sinks.mq-sink-msg6.max-monitor-cnt=500000
