Document Resolver Service for a JMS Trigger
The document resolver service is a service that you build to determine whether a message’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 message status, such as the trigger name and the JMS message. The document resolver service must return one of the following for the message status: NEW, DUPLICATE, or IN_DOUBT.
By using the delivery count and the document history database, Integration Server can assign most messages a status of New or Duplicate. However, a small window of time exists where checking the delivery count and the message history database might not conclusively determine whether a trigger processed a message before. For example:
If a duplicate message arrives before the trigger finishes processing the original message, the document history database does not yet contain an entry that indicates processing completed.
Integration Server assigns the second message a status of In Doubt. Typically, this is only an issue for long-running trigger services.
If
Integration Server fails before completing message processing, the JMS provider redelivers the message. However, the document history database contains only an entry that indicates message processing started.
Integration Server assigns the redelivered message a status of In Doubt.
You can write a document resolver service to determine the status of messages received during these windows. How the document resolver service determines the message 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 message to determine the message status conclusively. If processing an earlier copy of the message 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.