blob: 948e106d1261f810d8ab593431328dc8c88a8f91 [file] [log] [blame]
/*
* 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.
*/
package org.apache.usergrid.corepersistence.index;
import org.safehaus.guicyfig.Default;
import org.safehaus.guicyfig.FigSingleton;
import org.safehaus.guicyfig.GuicyFig;
import org.safehaus.guicyfig.Key;
/**
* Application id cache fig
*/
@FigSingleton
public interface IndexProcessorFig extends GuicyFig {
String FAILURE_REJECTED_RETRY_WAIT_TIME = "elasticsearch.rejected_retry_wait";
String DLQ_FAILURE_REJECTED_RETRY_WAIT_TIME = "elasticsearch.deadletter.rejected_retry_wait";
String ELASTICSEARCH_WORKER_COUNT = "elasticsearch.worker_count";
String ELASTICSEARCH_WORKER_COUNT_UTILITY = "elasticsearch.worker_count_utility";
String ELASTICSEARCH_WORKER_COUNT_DELETE = "elasticsearch.worker_count_delete";
String ELASTICSEARCH_WORKER_COUNT_DEADLETTER = "elasticsearch.worker_count_deadletter";
String ELASTICSEARCH_WORKER_COUNT_UTILITY_DEADLETTER = "elasticsearch.worker_count_utility_deadletter";
String ELASTICSEARCH_WORKER_COUNT_DELETE_DEADLETTER = "elasticsearch.worker_count_delete_deadletter";
String EVENT_CONCURRENCY_FACTOR = "event.concurrency.factor";
String ELASTICSEARCH_QUEUE_IMPL = "elasticsearch.queue_impl";
String INDEX_QUEUE_VISIBILITY_TIMEOUT = "elasticsearch.queue_visibility_timeout";
String REINDEX_BUFFER_SIZE = "elasticsearch.reindex.buffer_size";
String COLLECTION_DELETE_BUFFER_SIZE = "elasticsearch.collection_delete.buffer_size";
String REINDEX_CONCURRENCY_FACTOR = "elasticsearch.reindex.concurrency.factor";
/**
* Set the amount of time to wait when indexing or utility queue rejects a request before
* retrying. This provides simple back pressure. (in milliseconds)
*/
@Default("1000")
@Key(FAILURE_REJECTED_RETRY_WAIT_TIME)
long getFailureRetryTime();
/**
* Set the amount of time to wait when indexing or utility dead letter queue rejects a request before
* retrying. This provides simple back pressure. (in milliseconds)
*/
@Default("2000")
@Key(DLQ_FAILURE_REJECTED_RETRY_WAIT_TIME)
long getDeadLetterFailureRetryTime();
/**
* Set the visibility timeout for messages received from the queue. (in milliseconds).
* Received messages will remain 'in flight' until they are ack'd(deleted) or this timeout occurs.
* If the timeout occurs, the messages will become visible again for re-processing.
*/
@Default( "30000" ) // 30 seconds
@Key( INDEX_QUEUE_VISIBILITY_TIMEOUT )
int getIndexQueueVisibilityTimeout();
/**
* The number of worker threads used when handing off messages from the SQS thread
*/
@Default( "5" )
@Key( EVENT_CONCURRENCY_FACTOR )
int getEventConcurrencyFactor();
/**
* The number of worker threads used to read index write requests from the queue.
*/
@Default("8")
@Key(ELASTICSEARCH_WORKER_COUNT)
int getWorkerCount();
/**
* The number of worker threads used to read utility requests from the queue ( mostly re-index ).
*/
@Default("2")
@Key(ELASTICSEARCH_WORKER_COUNT_UTILITY)
int getWorkerCountUtility();
/**
* The number of worker threads used to read delete requests from the queue.
*/
@Default("1")
@Key(ELASTICSEARCH_WORKER_COUNT_DELETE)
int getWorkerCountDelete();
/**
* The number of worker threads used to read dead messages from the index dead letter queue and reload them into the index queue.
*/
@Default("1")
@Key(ELASTICSEARCH_WORKER_COUNT_DEADLETTER)
int getWorkerCountDeadLetter();
/**
* The number of worker threads used to read dead messages from the utility dead letter queue and reload them into the utility queue.
*/
@Default("1")
@Key(ELASTICSEARCH_WORKER_COUNT_UTILITY_DEADLETTER)
int getWorkerCountUtilityDeadLetter();
/**
* The number of worker threads used to read dead messages from the delete dead letter queue and reload them into the delete queue.
*/
@Default("1")
@Key(ELASTICSEARCH_WORKER_COUNT_DELETE_DEADLETTER)
int getWorkerCountDeleteDeadLetter();
/**
* Set the implementation to use for queuing.
* Valid values: TEST, LOCAL, SQS, SNS
* NOTE: SQS and SNS equate to the same implementation of Amazon queue services.
*/
@Default("LOCAL")
@Key(ELASTICSEARCH_QUEUE_IMPL)
String getQueueImplementation();
@Default("500")
@Key(REINDEX_BUFFER_SIZE)
int getReindexBufferSize();
/**
* The number of parallel buffers during re-index that can be processed
*/
@Default("10")
@Key(REINDEX_CONCURRENCY_FACTOR)
int getReindexConcurrencyFactor();
/**
* Number of parallel buffers during collection delete
*/
@Default("500")
@Key(COLLECTION_DELETE_BUFFER_SIZE)
int getCollectionDeleteBufferSize();
/**
* Flag to resolve the LOCAL queue implementation service synchronously.
*/
@Default("false")
@Key("elasticsearch.queue_impl.resolution")
boolean resolveSynchronously();
/**
* Get the message TTL in milliseconds. Defaults to 24 hours
*
* 24 * 60 * 60 * 1000
*
* @return
*/
@Default("86400000")
@Key( "elasticsearch.message.ttl" )
int getIndexMessageTtl();
}