Class RetryingWriter
A proxy that attempts to continue writing on failure.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.northconcepts.datapipeline.core.DataEndpoint
DataEndpoint.State -
Field Summary
Fields inherited from class com.northconcepts.datapipeline.core.DataEndpoint
lastRecord, PRODUCT, PRODUCT_VERSION, VENDOR, XML_INPUT_FACTORY_KEYFields inherited from class com.northconcepts.datapipeline.core.Endpoint
BUFFER_SIZE, captureElapsedTime, DEFAULT_READ_BUFFER_SIZEFields inherited from class com.northconcepts.datapipeline.core.DataObject
id, log, name, TIMESTAMP_FORMAT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionaddExceptionProperties(DataException exception) Adds this endpoint's current state to aDataException.voidclose()Indicates that this endpoint has finished reading or writing.Returns the field in the record to place the description of the exception that was thrown by the failing write ornullif one should not be added.Returns the discard sink for failing records ornullif one was not assigned.longReturns the total number of exceptions/failures seen by this writer.Returns the first exception thrown for any individual write attempt.longReturns the amount of time to wait (in milliseconds) after the first error, before retrying (default 1 second).Returns the last exception thrown for any individual write attempt.longReturns the number of retries allowed across all write attempts (default max long - 1).intReturns the number of retries allowed for any individual write attempt (default 5).Returns the retry strategy (defaultRetryStrategy.EXPONENTIAL_BACKOFF).protected voidCalled after each failed write attempt; writes the record to the discard writer, if set, and throws oncegetMaxErrorCount()is exceeded.voidopen()Makes this endpoint ready for reading or writing.setDiscardReasonFieldName(String discardReasonFieldName) Specifies the field in the record to place the description of the exception that was thrown by the failing write ornullif one should not be added.setDiscardWriter(DataWriter writer) Assign a discard sink for failing records.setInitialRetryDelay(long initialRetryDelay) Sets the amount of time to wait (in milliseconds) after the first error, before retrying (default 1 second).setMaxErrorCount(long maxErrorCount) Sets the number of retries allowed across all write attempts (default max long -1).setMaxRetryCount(int maxRetryCount) Sets the number of retries allowed for any individual write attempt (default 5).setStrategy(IRetryStrategy strategy) Sets the retry strategy (defaultRetryStrategy.EXPONENTIAL_BACKOFF).protected voidOverridden by subclasses to write the specified record to thisDataWriter.Methods inherited from class com.northconcepts.datapipeline.core.ProxyWriter
available, getNestedWriter, interceptRecord, map, map, setNestedDataWriter, setNestedDataWriterMethods inherited from class com.northconcepts.datapipeline.core.DataWriter
getNestedEndpoint, getRootEndpoint, getRootWriter, getWriter, writeMethods inherited from class com.northconcepts.datapipeline.core.DataEndpoint
decrementRecordCount, enableJmx, getLastRecord, getRecordCount, getRecordCountAsBigInteger, getRecordCountAsString, incrementRecordCount, isRecordCountBigInteger, resetRecordCount, toStringMethods inherited from class com.northconcepts.datapipeline.core.Endpoint
addElapsedtime, assertClosed, assertNotOpened, assertOpened, finalize, getClosedOn, getDescription, getElapsedTime, getElapsedTimeAsString, getOpenedOn, getOpenElapsedTime, getOpenElapsedTimeAsString, getSelfTime, getSelfTimeAsString, getState, isCaptureElapsedTime, isClosed, isOpen, setCaptureElapsedTime, setDescription
-
Constructor Details
-
RetryingWriter
-
-
Method Details
-
getMaxRetryCount
public int getMaxRetryCount()Returns the number of retries allowed for any individual write attempt (default 5). -
setMaxRetryCount
Sets the number of retries allowed for any individual write attempt (default 5). -
getMaxErrorCount
public long getMaxErrorCount()Returns the number of retries allowed across all write attempts (default max long - 1). -
setMaxErrorCount
Sets the number of retries allowed across all write attempts (default max long -1). -
getInitialRetryDelay
public long getInitialRetryDelay()Returns the amount of time to wait (in milliseconds) after the first error, before retrying (default 1 second). -
setInitialRetryDelay
Sets the amount of time to wait (in milliseconds) after the first error, before retrying (default 1 second). -
getStrategy
Returns the retry strategy (defaultRetryStrategy.EXPONENTIAL_BACKOFF). -
setStrategy
Sets the retry strategy (defaultRetryStrategy.EXPONENTIAL_BACKOFF). -
getExceptionCount
public long getExceptionCount()Returns the total number of exceptions/failures seen by this writer. This value is also the number of retries as long as maxErrorCount hasn't been exceeded. -
getFirstException
Returns the first exception thrown for any individual write attempt. This value will reset on the next write attempt after a successful retry. -
getLastException
Returns the last exception thrown for any individual write attempt. This value will reset on the next write attempt after a successful retry. -
getDiscardWriter
Returns the discard sink for failing records ornullif one was not assigned. -
setDiscardWriter
Assign a discard sink for failing records.- Parameters:
writer- the discard sink
-
getDiscardReasonFieldName
Returns the field in the record to place the description of the exception that was thrown by the failing write ornullif one should not be added. -
setDiscardReasonFieldName
Specifies the field in the record to place the description of the exception that was thrown by the failing write ornullif one should not be added. -
open
Description copied from class:DataEndpointMakes this endpoint ready for reading or writing.- Overrides:
openin classProxyWriter- Throws:
DataException
-
close
Description copied from class:DataEndpointIndicates that this endpoint has finished reading or writing.- Overrides:
closein classProxyWriter- Throws:
DataException
-
writeImpl
Description copied from class:DataWriterOverridden by subclasses to write the specified record to thisDataWriter.Contract for subclasses (see also
docs/authoring/DataWriter.md):- Do not call this method directly —
DataWriter.write(Record)is the template method that wraps exceptions, increments the record count, and attaches the offending record to thrownDataExceptions. - Do not call
DataEndpoint.incrementRecordCount()here;DataWriter.write(Record)already does. - Throw raw exceptions;
DataWriter.write(Record)wraps them viaexception(throwable).setRecord(record).
- Overrides:
writeImplin classProxyWriter- Throws:
Throwable
- Do not call this method directly —
-
onFailure
Called after each failed write attempt; writes the record to the discard writer, if set, and throws oncegetMaxErrorCount()is exceeded. -
addExceptionProperties
Description copied from class:EndpointAdds this endpoint's current state to aDataException. Since this method is called whenever an exception is thrown, subclasses should override it to add their specific information.- Overrides:
addExceptionPropertiesin classProxyWriter
-