public class SemaphoreProtectedReleaseQueryBackPressure extends Object implements QueryBackPressure
SemaphoreQueryBackPressure
with the exception that `releaseAfterQuery`
calls are asynchronous (non-blocking) and protected against generating more `permits` than `backPressureLimit`.
This comes with additional overhead of using a separate thread to process any new `release` calls
which means that all calls to `releaseAfterQuery` will be processed in sequential order one by one.
The first time logic registers that an attempt to add a new permit could potentially result in a bigger amount of
`permits` than `backPressureLimit`, it logs a warning. Subsequent calls to `releaseAfterQuery` will not log such
warning anymore.Constructor and Description |
---|
SemaphoreProtectedReleaseQueryBackPressure(int backPressureLimit) |
Modifier and Type | Method and Description |
---|---|
void |
acquireBeforeQuery()
Acquires one slot.
|
void |
close()
Releases any resources related to the back pressure mechanism.
|
void |
releaseAfterQuery()
Releases one slot in non-blocking fashion.
|
public SemaphoreProtectedReleaseQueryBackPressure(int backPressureLimit)
public void acquireBeforeQuery()
QueryBackPressure
acquireBeforeQuery
in interface QueryBackPressure
public void releaseAfterQuery()
QueryBackPressure
releaseAfterQuery
in interface QueryBackPressure
public void close()
QueryBackPressure
close
in interface QueryBackPressure
Copyright © 2012–2023. All rights reserved.