Integration Server 10.3 | Publish-Subscribe Developer’s Guide | Exactly-Once Processing for Documents Received by webMethods Messaging Triggers | Overview of Exactly-Once Processing | Document Resolver Service
 
Document Resolver Service
 
Document Resolver Service and Exceptions
The document resolver service is a service that you build to determine whether a document’s status is New, Duplicate, or In Doubt. Integration Server passes the document resolver service some basic information that the service will use to determine document status, such as whether or not the transport sent the document previously, the document UUID, the transport used to route the document, and the actual document. The document resolver service must return one of the following for the document status: NEW, DUPLICATE, or IN DOUBT.
By using the redelivery count and the document history database, Integration Server can assign most documents a status of New or Duplicate. However, a small window of time exists where checking the redelivery count and the document history database does not conclusively determine whether a trigger processed a document before. For example:
*If a duplicate document arrives before the trigger finishes processing the original document, the document history database does not yet contain an entry that indicates processing completed. Integration Server assigns the second document a status of In Doubt. Typically, this is only an issue for long-running trigger services.
*If Integration Server fails before completing document processing, the transport redelivers the document. However, the document history database contains only an entry that indicates document processing started. Integration Server assigns the redelivered document a status of In Doubt.
You can write a document resolver service to determine the status of documents received during these windows. How the document resolver service determines the document status is up to the developer of the service. Ideally, the writer of the document resolver service understands the semantics of all the applications involved and can use the document to determine the document status conclusively. If processing an earlier copy of the document left some application resources in an indeterminate state, the document resolver service can also issue compensating transactions.
If provided, the document resolver service is the final method of duplicate detection.
For more information about building a document resolver service, see Building a Document Resolver Service.