Package org.camunda.bpm.engine.rest.impl
Class FetchAndLockHandlerImpl
- java.lang.Object
-
- org.camunda.bpm.engine.rest.impl.FetchAndLockHandlerImpl
-
- All Implemented Interfaces:
Runnable
,FetchAndLockHandler
public class FetchAndLockHandlerImpl extends Object implements Runnable, FetchAndLockHandler
- Author:
- Tassilo Weidner
-
-
Field Summary
Fields Modifier and Type Field Description protected SingleConsumerCondition
condition
protected Thread
handlerThread
protected boolean
isRunning
protected boolean
isUniqueWorkerRequest
protected static long
MAX_BACK_OFF_TIME
protected static long
MAX_REQUEST_TIMEOUT
protected List<FetchAndLockRequest>
newRequests
protected static long
PENDING_REQUEST_FETCH_INTERVAL
protected List<FetchAndLockRequest>
pendingRequests
protected BlockingQueue<FetchAndLockRequest>
queue
protected static String
UNIQUE_WORKER_REQUEST_PARAM_NAME
-
Constructor Summary
Constructors Constructor Description FetchAndLockHandlerImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
acquire()
void
addPendingRequest(FetchExternalTasksExtendedDto dto, javax.ws.rs.container.AsyncResponse asyncResponse, ProcessEngine processEngine)
Invoked if a fetch and lock request has been sent by the clientprotected void
addRequest(FetchAndLockRequest request)
void
contextInitialized(javax.servlet.ServletContextEvent servletContextEvent)
Invoked on initialization of the servlet contextprotected void
errorTooManyRequests(javax.ws.rs.container.AsyncResponse asyncResponse)
protected List<LockedExternalTaskDto>
executeFetchAndLock(FetchExternalTasksExtendedDto fetchingDto, ProcessEngine processEngine)
List<FetchAndLockRequest>
getPendingRequests()
protected ProcessEngine
getProcessEngine(FetchAndLockRequest request)
protected boolean
isExpired(FetchAndLockRequest request)
protected void
parseUniqueWorkerRequestParam(String uniqueWorkerRequestParam)
protected void
rejectPendingRequests()
protected void
removeDuplicates()
void
run()
void
shutdown()
Receives a notification that the engine rest web application is about to be shut downvoid
start()
Receives a notification that the engine rest web application initialization has been startedprotected void
suspend(long millis)
protected void
suspendAcquisition(long millis)
protected FetchAndLockResult
tryFetchAndLock(FetchAndLockRequest request)
-
-
-
Field Detail
-
UNIQUE_WORKER_REQUEST_PARAM_NAME
protected static final String UNIQUE_WORKER_REQUEST_PARAM_NAME
- See Also:
- Constant Field Values
-
PENDING_REQUEST_FETCH_INTERVAL
protected static final long PENDING_REQUEST_FETCH_INTERVAL
- See Also:
- Constant Field Values
-
MAX_BACK_OFF_TIME
protected static final long MAX_BACK_OFF_TIME
- See Also:
- Constant Field Values
-
MAX_REQUEST_TIMEOUT
protected static final long MAX_REQUEST_TIMEOUT
- See Also:
- Constant Field Values
-
condition
protected SingleConsumerCondition condition
-
queue
protected BlockingQueue<FetchAndLockRequest> queue
-
pendingRequests
protected List<FetchAndLockRequest> pendingRequests
-
newRequests
protected List<FetchAndLockRequest> newRequests
-
handlerThread
protected Thread handlerThread
-
isRunning
protected volatile boolean isRunning
-
isUniqueWorkerRequest
protected boolean isUniqueWorkerRequest
-
-
Method Detail
-
acquire
protected void acquire()
-
removeDuplicates
protected void removeDuplicates()
-
start
public void start()
Description copied from interface:FetchAndLockHandler
Receives a notification that the engine rest web application initialization has been started- Specified by:
start
in interfaceFetchAndLockHandler
-
shutdown
public void shutdown()
Description copied from interface:FetchAndLockHandler
Receives a notification that the engine rest web application is about to be shut down- Specified by:
shutdown
in interfaceFetchAndLockHandler
-
suspend
protected void suspend(long millis)
-
suspendAcquisition
protected void suspendAcquisition(long millis)
-
addRequest
protected void addRequest(FetchAndLockRequest request)
-
tryFetchAndLock
protected FetchAndLockResult tryFetchAndLock(FetchAndLockRequest request)
-
executeFetchAndLock
protected List<LockedExternalTaskDto> executeFetchAndLock(FetchExternalTasksExtendedDto fetchingDto, ProcessEngine processEngine)
-
errorTooManyRequests
protected void errorTooManyRequests(javax.ws.rs.container.AsyncResponse asyncResponse)
-
rejectPendingRequests
protected void rejectPendingRequests()
-
getProcessEngine
protected ProcessEngine getProcessEngine(FetchAndLockRequest request)
-
isExpired
protected boolean isExpired(FetchAndLockRequest request)
-
addPendingRequest
public void addPendingRequest(FetchExternalTasksExtendedDto dto, javax.ws.rs.container.AsyncResponse asyncResponse, ProcessEngine processEngine)
Description copied from interface:FetchAndLockHandler
Invoked if a fetch and lock request has been sent by the client- Specified by:
addPendingRequest
in interfaceFetchAndLockHandler
- Parameters:
dto
- which is supposed to hold the payloadasyncResponse
- provides means for asynchronous server side response processingprocessEngine
- provides the process engine context of the respective request
-
contextInitialized
public void contextInitialized(javax.servlet.ServletContextEvent servletContextEvent)
Description copied from interface:FetchAndLockHandler
Invoked on initialization of the servlet context- Specified by:
contextInitialized
in interfaceFetchAndLockHandler
- Parameters:
servletContextEvent
- provides the servlet context
-
parseUniqueWorkerRequestParam
protected void parseUniqueWorkerRequestParam(String uniqueWorkerRequestParam)
-
getPendingRequests
public List<FetchAndLockRequest> getPendingRequests()
-
-