/* * Copyright 2013 Netflix, Inc. * * Licensed 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. */ package com.netflix.suro; import com.netflix.governator.annotations.Configuration; import com.netflix.suro.input.JsonLog4jFormatter; import com.netflix.suro.message.serde.JsonSerDe; import com.netflix.suro.message.SerDe; import com.netflix.suro.message.serde.SerDeFactory; public class ClientConfig { public static final String CONNECTION_TIMEOUT = "SuroClient.connectionTimeout"; @Configuration(CONNECTION_TIMEOUT) private int connectionTimeout = 5000; // millisecond public int getConnectionTimeout() { return connectionTimeout; } public static final String ENABLE_OUTPOOL = "SuroClient.enableOutPool"; @Configuration(ENABLE_OUTPOOL) private boolean enableOutPool = false; public boolean getEnableOutPool() { return enableOutPool; } public static final String CONNECTION_SWEEP_INTERVAL = "SuroClient.connectionSweepInterval"; @Configuration(CONNECTION_SWEEP_INTERVAL) private int connectionSweepInterval = 3600; // second public int getConnectionSweepInterval() { return connectionSweepInterval; } public static final String LOG4J_FORMATTER = "SuroClient.log4jFormatter"; @Configuration(LOG4J_FORMATTER) private String log4jFormatter = JsonLog4jFormatter.class.toString(); public String getLog4jFormatter() { return log4jFormatter; } public static final String LOG4J_DATETIMEFORMAT = "SuroClient.log4jDateTimeFormat"; @Configuration(LOG4J_DATETIMEFORMAT) private String log4jDateTimeFormat = "yyyy-MM-dd'T'HH:mm:ss,SSS"; public String getLog4jDateTimeFormat() { return log4jDateTimeFormat; } public static final String LOG4J_ROUTING_KEY = "SuroClient.log4jRoutingKey"; @Configuration(LOG4J_ROUTING_KEY) private String log4jRoutingKey = ""; public String getLog4jRoutingKey() { return log4jRoutingKey; } public static final String APP = "SuroClient.app"; @Configuration(APP) private String app = "defaultApp"; public String getApp() { return app; } public static final String RETRY_COUNT = "SuroClient.retryCount"; @Configuration(RETRY_COUNT) private int retryCount = 5; public int getRetryCount() { return retryCount; } public static final String SERDE = "SuroClient.serDe"; @Configuration(SERDE) private String serde = JsonSerDe.class.getCanonicalName(); public SerDe getSerDe() { return SerDeFactory.create(serde); } public static final String COMPRESSION = "SuroClient.compression"; @Configuration(COMPRESSION) private int compression = 1; public int getCompression() { return compression; } public static final String CLIENT_TYPE = "SuroClient.clientType"; @Configuration(CLIENT_TYPE) private String clientType = "async"; public String getClientType() { return clientType; } public static final String ASYNC_SENDER_THREADS = "SuroClient.asyncSenderThreads"; @Configuration(ASYNC_SENDER_THREADS) private int senderThreads = 3; public int getAsyncSenderThreads() { return senderThreads; } public static final String ASYNC_BATCH_SIZE = "SuroClient.asyncBatchSize"; @Configuration(ASYNC_BATCH_SIZE) private int asyncBatchSize = 200; public int getAsyncBatchSize() { return asyncBatchSize; } public static final String ASYNC_TIMEOUT = "SuroClient.asyncTimeout"; @Configuration(ASYNC_TIMEOUT) private int asyncTimeout = 5000; public int getAsyncTimeout() { return asyncTimeout; } public static final String ASYNC_QUEUE_TYPE = "SuroClient.asyncQueueType"; @Configuration(ASYNC_QUEUE_TYPE) private String asyncQueueType = "memory"; public String getAsyncQueueType() { return asyncQueueType; } public static final String ASYNC_MEMORYQUEUE_CAPACITY = "SuroClient.asyncMemoryQueueCapacity"; @Configuration(ASYNC_MEMORYQUEUE_CAPACITY) private int asyncMemoryQueueCapacity = 10000; public int getAsyncMemoryQueueCapacity() { return asyncMemoryQueueCapacity; } public static final String ASYNC_JOBQUEUE_CAPACITY = "SuroClient.asyncJobQueueCapacity"; @Configuration(ASYNC_JOBQUEUE_CAPACITY) private int asyncJobQueueCapacity = 0; public int getAsyncJobQueueCapacity() { if (asyncJobQueueCapacity == 0) { return asyncMemoryQueueCapacity / asyncBatchSize; } else { return asyncJobQueueCapacity; } } public static final String ASYNC_FILEQUEUE_PATH = "SuroClient.asyncFileQueuePath"; @Configuration(ASYNC_FILEQUEUE_PATH) private String asyncFileQueuePath = "/logs/suroclient"; public String getAsyncFileQueuePath() { return asyncFileQueuePath; } public static final String ASYNC_FILEQUEUE_NAME = "SuroClient.asyncFileQueueName"; @Configuration(ASYNC_FILEQUEUE_NAME) private String asyncFileQueueName = "default"; public String getAsyncFileQueueName() { return asyncFileQueueName; } public static final String FILEQUEUE_GC_PERIOD = "SuroClient.asyncFileQueueGCPeriod"; @Configuration(FILEQUEUE_GC_PERIOD) private String fileQueueGCPeriod = "PT1m"; public String getAsyncFileQueueGCPeriod() { return fileQueueGCPeriod; } public static final String FILEQUEUE_SIZELIMIT = "SuroClient.fileQueueSizeLimit"; @Configuration(FILEQUEUE_SIZELIMIT) private long fileQueueSizeLimit = 10L * 1024L * 1024L * 1024L; // 10 GB public long getFileQueueSizeLimit() { return fileQueueSizeLimit; } public static final String LB_TYPE = "SuroClient.loadBalancerType"; @Configuration(LB_TYPE) private String loadBalancerType; public String getLoadBalancerType() { return loadBalancerType; } public static final String LB_SERVER = "SuroClient.loadBalancerServer"; @Configuration(LB_SERVER) private String loadBalancerServer; public String getLoadBalancerServer() { return loadBalancerServer; } public static final String MINIMUM_RECONNECT_TIME_INTERVAL = "SuroClient.minimum.reconnect.timeInterval"; @Configuration(MINIMUM_RECONNECT_TIME_INTERVAL) private int minimumReconnectTimeInterval = 90000; public int getMinimumReconnectTimeInterval() { return minimumReconnectTimeInterval; } public static final String RECONNECT_INTERVAL = "SuroClient.reconnect.interval"; @Configuration(RECONNECT_INTERVAL) private int reconnectInterval = 240; public int getReconnectInterval() { return reconnectInterval; } public static final String RECONNECT_TIME_INTERVAL = "SuroClient.reconnect.timeInterval"; @Configuration(RECONNECT_TIME_INTERVAL) private int reconnectTimeInterval = 300000; public int getReconnectTimeInterval() { return reconnectTimeInterval; } }