/**
* Copyright 2012-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file 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.amazonaws.services.simpleworkflow.flow;
import java.lang.Thread.UncaughtExceptionHandler;
import com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflow;
import com.amazonaws.services.simpleworkflow.flow.annotations.SkipTypeRegistration;
import com.amazonaws.services.simpleworkflow.flow.config.SimpleWorkflowClientConfig;
public interface WorkerBase extends SuspendableWorker {
AmazonSimpleWorkflow getService();
SimpleWorkflowClientConfig getClientConfig();
String getDomain();
boolean isRegisterDomain();
/**
* Should domain be registered on startup. Default is false
.
* When enabled {@link #setDomainRetentionPeriodInDays(long)} property is
* required.
*/
void setRegisterDomain(boolean registerDomain);
long getDomainRetentionPeriodInDays();
/**
* Value of DomainRetentionPeriodInDays parameter passed to
* {@link AmazonSimpleWorkflow#registerDomain} call. Required when
* {@link #isRegisterDomain()} is true
.
*/
void setDomainRetentionPeriodInDays(long domainRetentionPeriodInDays);
/**
* Task list name that given worker polls for tasks.
*/
String getTaskListToPoll();
double getMaximumPollRatePerSecond();
/**
* Maximum number of poll request to the task list per second allowed.
* Default is 0 which means unlimited.
*
* @see #setMaximumPollRateIntervalMilliseconds(int)
*/
void setMaximumPollRatePerSecond(double maximumPollRatePerSecond);
int getMaximumPollRateIntervalMilliseconds();
/**
* The sliding window interval used to measure the poll rate. Controls
* allowed rate burstiness. For example if allowed rate is 10 per second and
* poll rate interval is 100 milliseconds the poller is not going to allow
* more then one poll per 100 milliseconds. If poll rate interval is 10
* seconds then 100 request can be emitted as fast as possible, but then the
* polling stops until 10 seconds pass.
*
* @see #setMaximumPollRatePerSecond(double)
*/
void setMaximumPollRateIntervalMilliseconds(int maximumPollRateIntervalMilliseconds);
UncaughtExceptionHandler getUncaughtExceptionHandler();
/**
* Handler notified about poll request and other unexpected failures. The
* default implementation logs the failures using ERROR level.
*/
void setUncaughtExceptionHandler(UncaughtExceptionHandler uncaughtExceptionHandler);
String getIdentity();
/**
* Set the identity that worker specifies in the poll requests. This value
* ends up stored in the identity field of the corresponding Start history
* event. Default is "pid"@"host".
*
* @param identity
* maximum size is 256 characters.
*/
void setIdentity(String identity);
long getPollBackoffInitialInterval();
/**
* Failed poll requests are retried after an interval defined by an
* exponential backoff algorithm. See BackoffThrottler for more info.
*
* @param backoffInitialInterval
* the interval between failure and the first retry. Default is
* 100.
*/
void setPollBackoffInitialInterval(long backoffInitialInterval);
long getPollBackoffMaximumInterval();
/**
* @see WorkerBase#setPollBackoffInitialInterval(long)
*
* @param backoffMaximumInterval
* maximum interval between poll request retries. Default is
* 60000 (one minute).
*/
void setPollBackoffMaximumInterval(long backoffMaximumInterval);
double getPollBackoffCoefficient();
/**
* @see WorkerBase#setPollBackoffInitialInterval(long)
*
* @param backoffCoefficient
* coefficient that defines how fast retry interval grows in case
* of poll request failures. Default is 2.0.
*/
void setPollBackoffCoefficient(double backoffCoefficient);
boolean isDisableServiceShutdownOnStop();
/**
* When set to false (which is default) at the beginning of the worker
* shutdown {@link AmazonSimpleWorkflow#shutdown()} is called. It causes all
* outstanding long poll request to disconnect. But also causes all future
* request (for example activity completions) to SWF fail.
*/
void setDisableServiceShutdownOnStop(boolean disableServiceShutdownOnStop);
int getPollThreadCount();
/**
* Defines how many concurrent threads are used by the given worker to poll
* the specified task list. Default is 1. The size of the task execution
* thread pool is defined through {@link #setExecuteThreadCount(int)}.
*/
void setPollThreadCount(int threadCount);
int getExecuteThreadCount();
/**
* Defines how many concurrent threads are used by the given worker to poll
* the specified task list. Default is 1. This will be the actual number of
* threads which execute tasks which are polled from the specified task list
* by Poll threads
*/
void setExecuteThreadCount(int threadCount);
/**
* Try to register every type (activity or workflow depending on worker)
* that are configured with the worker.
*
* @see #setDisableTypeRegistrationOnStart(boolean)
*/
void registerTypesToPoll();
boolean isRunning();
/**
* When set to true disables types registration on start even if
* {@link SkipTypeRegistration} is not specified. Types still can be
* registered by calling {@link #registerTypesToPoll()}.
*/
void setDisableTypeRegistrationOnStart(boolean disableTypeRegistrationOnStart);
boolean isDisableTypeRegistrationOnStart();
/**
* When set to true allows the task execution threads to terminate
* if they have been idle for 1 minute.
*/
void setAllowCoreThreadTimeOut(boolean allowCoreThreadTimeOut);
boolean isAllowCoreThreadTimeOut();
}