Ingest Result Handlers

When you ingest a document using the Add, Replace, Remove or Update methods, the ingest command is placed in a queue and the method returns immediately. ConnectorLib .NET takes care of batching, sending the commands, and dealing with any transitory problems communicating with the target.

As a result, the Add, Replace, Remove and Update methods never fail, even if there is a problem ingesting a document. To find out whether each document was ingested successfully, you can register an Ingest result handler:

       task.Ingester.AddResultHandler(ResultHandler);

The result handler is called whenever a document is successfully ingested or when ingestion fails for a document. A simple result handler is shown here:

private void ResultHandler(IDocInfo docInfo,
	IngestTaskType type, bool success)
{
	if (success)
	{
		_task.Log.WriteLine(LogLevel.Normal,
			string.Format("Document {0}, ingest {1} succeeded!",
			docInfo.Document.Reference, type));
	}
	else
	{
		_task.Log.WriteLine(LogLevel.Error,
			string.Format("Ingestion failed for {0}",
			docInfo.Document.Reference));
	}
}

Ingest result handlers are useful when you want to update state information only when documents are ingested successfully. An example of a connector using an ingest result handler for this purpose is included in Make an Incremental Synchronize Action.